过去,我一直避免使用ORM并手工编写参数化查询等。这非常耗时,而且在首次开发应用程序时真的很麻烦。最近,我决定再次看看ORM,特别是Sqlite.NET ORM。
我想使用SQLite ORM功能,但也希望能够运行一批本地SQL命令来预填充数据库。
我们正在使用SqliteNetExtensions-MvvmCross dll来启用一对多关系等,这看起来都很好。我的问题出在当我想用配置数据填充数据库时。我希望只需提供一个包含一系列SQL语句的SQL文件,它就会按顺序运行其中的每一条语句。
我从GITHub中获取了SQlite.NET代码并运行了测试。然后我扩展了StringQueryTests类,其中有一个简单的[Product]表,以执行以下操作:
当我运行这个程序时,它没有抛出错误,实际上,它的行为似乎是只运行第一个命令。如果我将sb.ToString()的内容粘贴到sqlite数据库查询窗口中,它将正常工作。
这是预期的行为吗?如果是,我该如何克服这个问题,以便我可以使用上述方法。如果可能的话,我不想创建对象来管理所有SQL语句。
我可以看到有许多方法可以采用来克服这个问题 - 有人有解决这个问题的解决方法或建议吗?
诚挚问候,
Alan.
我想使用SQLite ORM功能,但也希望能够运行一批本地SQL命令来预填充数据库。
我们正在使用SqliteNetExtensions-MvvmCross dll来启用一对多关系等,这看起来都很好。我的问题出在当我想用配置数据填充数据库时。我希望只需提供一个包含一系列SQL语句的SQL文件,它就会按顺序运行其中的每一条语句。
我从GITHub中获取了SQlite.NET代码并运行了测试。然后我扩展了StringQueryTests类,其中有一个简单的[Product]表,以执行以下操作:
[Test]
public void AlanTest()
{
StringBuilder sb = new StringBuilder(200);
sb.Append(" DELETE FROM Product;");
sb.Append(" INSERT INTO Product VALUES (1,\"Name1\",1,1);");
sb.Append(" INSERT INTO Product VALUES (2,\"Name2\",2,3);");
db.Execute(sb.ToString());
}
当我运行这个程序时,它没有抛出错误,实际上,它的行为似乎是只运行第一个命令。如果我将sb.ToString()的内容粘贴到sqlite数据库查询窗口中,它将正常工作。
这是预期的行为吗?如果是,我该如何克服这个问题,以便我可以使用上述方法。如果可能的话,我不想创建对象来管理所有SQL语句。
我可以看到有许多方法可以采用来克服这个问题 - 有人有解决这个问题的解决方法或建议吗?
诚挚问候,
Alan.