这是我的app.config
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
<connectionStrings>
<add name="DataBaseEntity" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SQLite;provider connection string="data source=I:Sompepath\dbfilename"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
以下是用法
using (var context = new DataBaseEntity("name=DataBaseEntity"))
{
context.Connection.Open();
var status = delegatefunction(context);
if (status)
{
context.AcceptAllChanges();
context.SaveChanges(SaveOptions.DetectChangesBeforeSave);
context.Connection.Close();
return true;
}
return false;
}
委托函数看起来像这样
(context =>{var abc = new xyz();
context.xyzs.AddObject(abc);});
数据库没有刚刚添加到代理中的数据
并且应用程序中没有例外
上下文中的连接对象如下所示
答案 0 :(得分:1)
删除context.AcceptAllChanges();
该调用告诉EF没有待处理的更改,因此SaveChanges
无法保存到数据库,因为它认为所有更改都已保存。
AcceptAllChanges
通常在SaveChanges
内部调用。此方法是公开的,以支持您希望在multiple context within single transaction上保存修改的一些复杂方案。