在 SqlLite 文件数据库上使用此代码时,它工作正常。
using (var ctx = new Test2010Entities())
{
string s = "CREATE TABLE 'Company' ([Id] integer PRIMARY KEY AUTOINCREMENT NOT NULL, varchar(50) NOT NULL);";
ctx.ExecuteStoreCommand(s);
ctx.Companies.AddObject(new Company { Code = "_1" });
ctx.Companies.AddObject(new Company { Code = "_2" });
ctx.SaveChanges();
foreach (var c in ctx.Companies.ToList())
{
Console.WriteLine(c.Code);
}
}
但是在 SqlLite 'In Memory' 数据库(Data Source=:memory:;Version=3;New=True;)上运行此代码时,我得到了这个异常:
未处理的异常:System.Data.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.Data.SQLite.SQLiteException: SQL 逻辑错误或缺少数据库没有这样的表:公司
请注意,这是使用 VS 2010、EF 4.4.0.0 和 sqlite-netFx40-setup-bundle-x86-2010-1.0.84.0 测试的
::: 更新 :::
正如 Simon Svensson 建议的那样,在任何其他命令之前打开连接确实可以解决问题:ctx.Connection.Open();