Pregunta

Modifiqué System.Data.SQLite para usar una versión reciente del motor SQLite que aplica automáticamente claves foráneas sin usar activadores personalizados.

También estoy usando SubSonic 2.x pero esto se aplicaría a cualquier ORM marcos que utilizan SQLite que están 'abiertos tarde, cierran temprano'.

¿Cómo se aseguraría de que se invoque la declaración 'PRAGMA foreign_keys = true' en cada SQLiteConnection.Open ()? Tiene que llamarse o las claves externas no funcionan.

¿Fue útil?

Solución

Para solucionar esto, agregué una propiedad 'Claves foráneas' a ConnectionString en la clase SQLiteConnection.

Teclas extranjeras = ON Claves foráneas = OFF

Otros consejos

No necesita modificar System.Data.SQLite si desea usar la última versión de SQLite, solo use la versión ManagedOnly de System.Data.SQLite y luego reemplace el sqlite3.dll con la última versión. Para habilitar el soporte de clave externa, simplemente ejecuto una instrucción sql que habilita el soporte de clave externa. por ejemplo,

        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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top