如何实现PRAGMA foreign_keys = ON;在使用SQLite for Windows运行时的C#XAML项目中

时间:2014-07-18 18:20:07

标签: c# sqlite xaml zumero

如何使用SQLite for Windows运行时在C#XAML项目中实现PRAGMA foreign_keys = ON; PRAGMA recursive_triggers = ON;

使用Zss Manager准备数据库之后

我尝试使用以下代码段实现PRAGMA代码

public class DbConnection : IDbConnection
{
    string dbPath;
    SQLiteAsyncConnection conn;        

    public DbConnection()
    {
        dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "XYZ.db") ;
        conn = new SQLiteAsyncConnection(dbPath);


    }

    public async Task InitializeDatabase()
    {
        var pragma1 = await conn.ExecuteAsync("PRAGMA foreign_keys=ON");
        var pragma2 = await conn.ExecuteAsync("PRAGMA recursive_triggers = ON;"); 

但是我收到了这个错误:

  

.exe中出现“SQLite.SQLiteException”类型的异常,但未在用户代码中处理

     

其他信息:没有这样的专栏:OLD.z_rv

请任何人帮助克服这一挑战的模式

1 个答案:

答案 0 :(得分:1)

您正在使用Zumero和SQLite-Net(SQLite上流行的C#ORM层),因此您不应该调用SQLite-Net CreateTable<>()方法。在空数据库中调用CreateTable时,SQLite-Net将生成并执行SQL CREATE TABLE命令。不幸的是,这与Zumero直接冲突,Zumero期望在初始同步时,SQLite数据库中不存在任何需要从SQL Server同步的表。当然,对于Zumero而言,提供更好的错误比没有这样的专栏更好:OLD.z_rv&#34;

TL; DR:不要打电话给CreateTable当你拨打同步时,让Zumero为你创建表格。