DbLinq DbMetal - "Указанный ключ отсутствует в словаре" при добавлении внешнего ключа

Это моя начальная база данных SQLite

CREATE TABLE [Categories] (
  [ParentId] INT, 
  [Name] VARCHAR(100));

CREATE TABLE [Fees] (
  [CategoryId] INT, 
  [Name] VARCHAR(100), 
  [Value] VARCHAR(50), 
  [Info] VARCHAR(200));

CREATE TABLE [Markups] (
  [CategoryId] INT, 
  [UpTo] MONEY, 
  [Value] VARCHAR(50), 
  [Info] VARCHAR(200));

Если я бегу DbMetal /provider:Sqlite /conn "Data Source=bms4.db3" /dbml:Model.dbml, он успешно создаст файл dbml.

Но если я добавлю внешний ключ, такой, что

CREATE TABLE [Fees] (
  [CategoryId] INT CONSTRAINT [fk_fees_categories] REFERENCES [Categories]([rowid]), 
  [Name] VARCHAR(100), 
  [Value] VARCHAR(50), 
  [Info] VARCHAR(200));

Запуск той же команды

DbMetal /provider:Sqlite /conn "Data Source=bms4.db3" /dbml:Model.dbml

выдаст эту ошибку:

>>> Reading schema from SQLite database
DbMetal: The given key was not present in the dictionary.

Как я могу ввести отношение внешнего ключа в DBML?

1 ответ

Решение

Внешние ключи проверяются по уникальному ключу в ограничении. Вы не объявили первичный ключ или уникальный ключ, поэтому вам нужно начать с этого (рекомендуется, чтобы в каждой таблице был первичный ключ).

Другие вопросы по тегам