Обеспечить ограничение внешнего ключа с помощью SQLite & C # - PullRequest
0 голосов
/ 16 апреля 2019

Я создал ограничение внешнего ключа ON DELETE SET DEFAULT в базе данных и назначил значение по умолчанию.

Что я пробовал:

  • В приложении.Config: я добавил « внешние ключи = true; » в строку подключения.
  • Я отредактировал набор данных XSD
  • Я изменил DataSet наWinForm и применил его там: EnforceConstraints = true
  • Я проверил, моя версия SQLite достаточно высока для поддержки этого (я использую v1.0.110.0)
  • Iневозможно использовать команду PRAGMA (как показано здесь: Включение ограничений внешнего ключа в SQLite ), поскольку данные связаны с элементами управления.
  • Я перестроил проект.
  • Я попробовал это в SqliteStudio и там ограничение работает, но в C # это не работает.

Что я мог пропустить ...

Обновление: App.Config был каким-то образом не синхронизирован с настройками проекта, поэтому дополнительные параметры не были включены в сборку.Однако добавление параметра через свойства проекта приводит к ошибке.

"Data Source=.\InventoryManagerDatabase.db;foreign keys=true;" 

Ошибка:

System.InvalidOperationException: 'Неизвестный параметр строки подключения' внешние ключи '.'

Видимо этот параметр не существует?Я проверил различные ресурсы, включая Включение ограничений внешнего ключа в SQLite & SQLite EF6 программно устанавливает строку подключения во время выполнения , но это странно ... SQLite удалил этот параметр или переименовал его?

Я также пытался (как и комбинации чувствительности к регистру):

EnforceFKConstraints=True;
foreign key=true;
foreign keys=true;
foreign_keys=true;
ForeignKeys=true;
Foreign Key Constraints=true;
PRAGMA foreign_keys = ON; // obviously does not work

Но ничего не работает ...

1 Ответ

0 голосов
/ 17 апреля 2019

Наконец-то нашел!

Решение:

connectionString="Data Source=.\YourDatabaseName.db;Foreign Key Constraints=On;Version=3;"

Да, они где-то изменили его на Ограничения внешнего ключа = Вкл. , и каждая страница в Google, включая StackOverflow, по-прежнему показывает старый параметр ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...