【发布时间】:2016-10-14 08:33:24
【问题描述】:
我一直在使用SQLitePCL(当前版本为 3.8.7.2),现在决定通过打开外键约束来尝试删除和更新级联。我了解默认情况下禁用此功能,根据SQLite documentation,必须为每个数据库连接单独启用约束。
连接字符串仅采用数据库路径(无论如何对于 SQLitePCL)并且不允许更灵活的 data source=d:\foo\bar\mySqlite.db;foreign keys=ON 形式的复合连接字符串。如果我必须为每个连接开启约束,如下图,如何开启约束?
我期待ISQLiteStatement API 提供一些将PRAGMA foreign_keys = ON 语句注入我的连接语句 的方法,但没有看到明显的 [Intellisense] 方法或属性来实现这一点。探索 SQLiteConnection API 甚至不是一个开始,因为打开外键约束是每个连接。
注意:下面的 DeleteItemByIdQuery() 和 BindIdToDeleteItemByIdQuery() 方法返回 SQL 查询字符串,为简洁起见省略了详细信息。
using (ISQLiteStatement statement = new SQLiteConnection("d:\foo\bar\mySqlite.db").Prepare(DeleteItemByIdQuery()))
{
BindIdToDeleteItemByIdQuery(statement, id);
SQLiteResult result = statement.Step();
}
我忽略了一些简单的事情,还是这不可能?救命!
【问题讨论】:
标签: c# sqlite windows-runtime uwp