Frage

Ich habe System.Data.SQLite modifiziert, um eine aktuellere Version von SQLite Engine zu verwenden dass erzwingt automatisch Fremdschlüssel ohne benutzerdefinierten Trigger zu verwenden.

Ich verwende auch SubSonic 2.x aber dies würde gelten href="http://en.wikipedia.org/wiki/Object-relational_mapping" einem ORM Frameworks SQLite verwenden, die 'bis spät abends geöffnet früh schließen' sind.

Wie würden Sie sicherstellen, dass die Aussage ‚PRAGMA FOREIGN_KEYS = true‘ auf jedem SQLiteConnection.Open () aufgerufen wird? Es wird genannt oder Fremdschlüssel wird nicht funktionieren.

War es hilfreich?

Lösung

Um dies zu beheben, habe ich eine 'Foreign Keys' Eigenschaft Connectionstring in SQLiteConnection Klasse.

Fremdschlüssel = ON Fremdschlüssel = OFF

Andere Tipps

Sie brauchen nicht System.Data.SQLite zu ändern, wenn Sie die neueste Version von SQLite verwenden möchten, verwenden Sie einfach die ManagedOnly Version von System.Data.SQLite und dann nur die sqlite3.dll mit der neuesten Version ersetzen. Bei Fremdschlüsselunterstützung ermöglicht ausführen ich einfach eine SQL-Anweisung, die Fremdschlüssel-Unterstützung ermöglicht. z.

        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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top