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 ответ
Решение
Внешние ключи проверяются по уникальному ключу в ограничении. Вы не объявили первичный ключ или уникальный ключ, поэтому вам нужно начать с этого (рекомендуется, чтобы в каждой таблице был первичный ключ).