0

这是我的 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);});

数据库没有刚刚添加到委托中的数据

应用程序中也不例外

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

数据库和数据源为空

4

1 回答 1

1

删除context.AcceptAllChanges();该调用告诉 EF 没有挂起的更改,因此SaveChanges没有任何内容可保存到数据库,因为它认为所有更改都已保存。

AcceptAllChangesSaveChanges一旦所有修改都正确保存到数据库中,通常在内部调用。此方法是公开的,以支持您希望在单个事务中保存对多个上下文的修改的一些复杂场景。

于 2012-07-23T09:27:45.050 回答