SQLite PRAGMA foreign_keys вопрос
-
22-07-2019 - |
Вопрос
Я изменил System.Data.SQLite для использования последней версии SQLite это автоматически применяет внешние ключи без использования пользовательских триггеров. Р>
Я также использую SubSonic 2.x, но это применимо для любых ORM платформ, использующих SQLite, которые «открываются поздно, закрываются рано».
Как бы вы обеспечили, чтобы оператор «PRAGMA foreign_keys = true» вызывался в каждом SQLiteConnection.Open ()? Он должен быть вызван или внешние ключи не работают.
Решение
Чтобы исправить это, я добавил свойство «Внешние ключи» в ConnectionString в классе SQLiteConnection.
Внешние ключи = ON Внешние ключи = OFF
Другие советы
Вам не нужно изменять System.Data.SQLite, если вы хотите использовать последнюю версию SQLite, просто используйте версию ManagedOnly System.Data.SQLite, а затем только замените sqlite3.dll последней версией. Для включения поддержки внешнего ключа я просто выполняю инструкцию sql, которая включает поддержку внешнего ключа. например.
string databasePath = "Your database path here";
string connectionString = "Data Source=" + databasePath;
connection = new SQLiteConnection(connectionString);
connection.Open();
const string sqlString = "PRAGMA foreign_keys = ON;";
SQLiteCommand command = new SQLiteCommand(sqlString, connection);
command.ExecuteNonQuery();