如何在SQLite中默认启用外键级联删除?

Met*_*urf 7 c# sqlite foreign-keys system.data.sqlite

SQLite v3.7.5

有没有一种方法,使SQLite的外键cascade delete默认启用?给出以下示例:

CREATE TABLE [Parent] (
[ParentId] INTEGER  NOT NULL PRIMARY KEY AUTOINCREMENT,
[Name] VARCHAR(50)  UNIQUE NOT NULL
);

CREATE TABLE [Child] (
[ChildId] INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL,
[ParentId] INTEGER  NOT NULL,
[Name] VARCHAR(50)  NOT NULL,
FOREIGN KEY(ChildId) REFERENCES Child(ParentId) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)

我能够启用级联删除的唯一方法是PRAGMA foreign_keys = true在事务之前执行命令:

using( var conn = new SQLiteConnection( _conn ) )
{
    conn.Open();
    var pragma = new SQLiteCommand( "PRAGMA foreign_keys = true;", conn );
    pragma.ExecuteNonQuery();

    var cmd = new SQLiteCommand( "Delete from Parent where ParentId = 1", conn );
    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

是否可以配置数据库级别的设置而不必在每次事务之前调用pragma命令?

我已经看到了启用级联删除的触发器,但我正在寻找能够PRAGMA foreign_keys = true在数据库级别启用它的东西.

P a*_*u l 4

System.Data.SQLite 1.0.66 没有它,但在它的存储库版本中,他们已更新到 sqlite 3.7.4 并创建了一个新的连接字符串属性“外键”。谁知道什么时候正式发布?所以你可以在你的连接字符串中设置它。该项目现在在这里: http ://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki