SQLite PRAGMA foreign_keys вопрос - PullRequest
       17

SQLite PRAGMA foreign_keys вопрос

0 голосов
/ 01 декабря 2009

Я изменил System.Data.SQLite для использования последней версии механизма SQLite , который автоматически применяет внешние ключи без использования пользовательских триггеров.

Я также использую SubSonic 2.x, но это применимо к любым ORM инфраструктурам, использующим SQLite, которые «открываются поздно, закрываются рано».

Как бы вы обеспечили, чтобы оператор «PRAGMA foreign_keys = true» вызывался в каждом SQLiteConnection.Open ()? Он должен быть вызван или внешние ключи не работают.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2009

Чтобы исправить это, я добавил свойство «Внешние ключи» в ConnectionString в классе SQLiteConnection.

Foreign Keys = ON Внешние ключи = OFF

1 голос
/ 16 декабря 2009

Вам не нужно изменять System.Data.SQLite, если вы хотите использовать последнюю версию SQLite, просто используйте версию System.Data.SQLite ManagedOnly и затем только замените 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();
...