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
在数据库级别启用它的东西.
System.Data.SQLite 1.0.66 没有它,但在它的存储库版本中,他们已更新到 sqlite 3.7.4 并创建了一个新的连接字符串属性“外键”。谁知道什么时候正式发布?所以你可以在你的连接字符串中设置它。该项目现在在这里: http ://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
归档时间: |
|
查看次数: |
6328 次 |
最近记录: |