Ich habe verwendet SQLitePCL (derzeit ver. 3.8.7.2), und jetzt beschlossen, mit Delete und Update Cascade durch Aktivieren der Fremdschlüssel-Einschränkung zu experimentieren. Ich verstehe, dass diese Funktion standardmäßig deaktiviert ist und gemäß SQLite documentation muss die Einschränkung getrennt für jede Datenbankverbindung aktiviert werden.Wie setze ich die 'PRAGMA foreign_keys = ON' Anweisung mit SQLitePCL
Die Verbindungszeichenfolge nimmt nur einen Datenbankpfad (für SQLitePCL sowieso) und erlaubt keine flexiblere zusammengesetzte Verbindungszeichenfolge des Formulars data source=d:\foo\bar\mySqlite.db;foreign keys=ON
. Wenn ich das Constaint für für jede Verbindung wie unten gezeigt aktivieren muss, wie die Einschränkung zu aktivieren?
Ich erwartete das ISQLiteStatement
API einige Mittel zur Injektion des PRAGMA foreign_keys = ON
Anweisung in meine Verbindungsanweisung aber sehen keine offensichtliche [Intellisense] Methode oder Eigenschaft zu schaffen, dies zu erreichen. Das Erforschen der SQLiteConnection-API ist nicht einmal ein Starter, da die Fremdschlüsseleinschränkung pro Verbindung sowieso ist.
Hinweis: DeleteItemByIdQuery()
und BindIdToDeleteItemByIdQuery()
Methoden unten geben SQL Query-Zeichenfolgen zurück, und Details werden der Kürze halber weggelassen.
using (ISQLiteStatement statement = new SQLiteConnection("d:\foo\bar\mySqlite.db").Prepare(DeleteItemByIdQuery()))
{
BindIdToDeleteItemByIdQuery(statement, id);
SQLiteResult result = statement.Step();
}
Betrachte ich etwas Einfaches, oder ist das unmöglich? Hilfe!
Bitte beachten Sie, dass es sehr ineffizient ist, die Datenbank für jede Abfrage erneut zu öffnen. –