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.

Foi útil?

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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top