sqlite没有获得更新

时间:2012-07-23 09:19:33

标签: .net entity-framework sqlite

这是我的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=&quot;data  source=I:Sompepath\dbfilename&quot;" 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);});

数据库没有刚刚添加到代理中的数据

并且应用程序中没有例外

上下文中的连接对象如下所示

the database and datasource are empty

1 个答案:

答案 0 :(得分:1)

删除context.AcceptAllChanges();该调用告诉EF没有待处理的更改,因此SaveChanges无法保存到数据库,因为它认为所有更改都已保存。

一旦所有修改都正确保存到数据库中,

AcceptAllChanges通常在SaveChanges内部调用。此方法是公开的,以支持您希望在multiple context within single transaction上保存修改的一些复杂方案。