pergunta SQLite PRAGMA FOREIGN_KEYS
-
22-07-2019 - |
Pergunta
Eu modificado System.Data.SQLite usar uma versão recente do SQLite motor que aplica automaticamente as chaves estrangeiras sem o uso de gatilhos personalizados.
Eu também estou usando SubSonic 2.x, mas isso se aplicaria a qualquer ORM estruturas usando SQLite que são 'aberto até tarde fechar mais cedo'.
Como você garantir que a declaração 'FOREIGN_KEYS PRAGMA = true' é chamado em cada SQLiteConnection.Open ()? Tem de ser chamado ou chaves estrangeiras não fazer o trabalho.
Solução
Para corrigir isso, eu adicionei uma propriedade 'Foreign Keys' para ConnectionString na classe SQLiteConnection.
Chaves estrangeiras = ON Chaves estrangeiras = OFF
Outras dicas
Você não precisa modificar System.Data.SQLite se você quiser usar a última versão do SQLite, basta usar a versão ManagedOnly de System.Data.SQLite e apenas substituir o sqlite3.dll com a versão mais recente. Para permitir o suporte chave estrangeira Eu simplesmente executar uma instrução SQL que permite o suporte de chave estrangeira. por exemplo.
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();