Question

J'ai modifié System.Data.SQLite pour utiliser une version récente du moteur SQLite . qui applique automatiquement les clés étrangères sans utiliser de déclencheurs personnalisés.

J'utilise également SubSonic 2.x, mais cela s'appliquerait vers n'importe quel frameworks ORM utilisant SQLite et qui sont 'ouverts tard le matin'

Comment garantissez-vous que l'instruction 'PRAGMA foreign_keys = true' est appelée à chaque SQLiteConnection.Open ()? Il doit être appelé ou les clés étrangères ne fonctionnent pas.

Était-ce utile?

La solution

Pour résoudre ce problème, j'ai ajouté une propriété 'Foreign Keys' à ConnectionString dans la classe SQLiteConnection.

Clés étrangères = ON Touches étrangères = OFF

Autres conseils

Vous n'avez pas besoin de modifier System.Data.SQLite si vous souhaitez utiliser la dernière version de SQLite, utilisez simplement la version ManagedOnly de System.Data.SQLite, puis remplacez uniquement sqlite3.dll par la dernière version. Pour activer le support de clé étrangère, j'exécute simplement une instruction SQL qui active le support de clé étrangère. par exemple

        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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top