mor*_*pdx 31 entity-framework-4
我正在尝试解决与此处概述的错误类似的错误:
在.NET实体框架中调用SaveChanges时出现InvalidOperationException
似乎解决方案(我还没有尝试过),将System.Data.Objects.SaveOptions.None作为SaveChanges()方法的SaveOptions参数传递.
所以在我这样做之前,我试图准确理解不同的SaveOptions是如何工作的(None,AcceptAllChangesAfterSave,DetectAllChanges).然而,我无法找到明确的解释,也不确定默认是什么.任何人都可以澄清吗?
谢谢!
更新: 我在这里发布了实际问题:尝试使用EF 4迭代添加对象时出现System.InvalidOperationException
小智 18
短暂的纠正
SaveOptions.DetectChangesBeforeSave:这是默认值.当您执行ObjectContext.SaveChanges()时,将调用DetectChanges()方法以在OSM中同步附加实体.
SaveChanges是SaveChanges(SaveOptions optsions)方法的重载版本,此无参数版本调用此方法
SaveChanges(SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave)
Run Code Online (Sandbox Code Playgroud)
SaveOptions是一个Flag枚举,总的来说,SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave默认值SaveChanges()不是DetectChangesBeforeSave
RPM*_*984 17
简而言之(根据我的理解):
SaveOptions.DetectChangesBeforeSave:这是默认值.当您执行ObjectContext.SaveChanges()时,将调用DetectChanges()方法以在OSM中同步附加实体.
SaveOptions.AcceptAllChangesAfterSave:当你做ObjectContext.SaveChanges() ,该方法AcceptAllChanges()被调用-这是OSM,在图中的实体迭代,地址和设置不变/独立的胆量.
SaveOptions.None:当您执行ObjectContext.SaveChanges()时,会立即保存更改 - 根本不同步.无论图中的是什么,都将保存.
根据我的经验,我没有改变这个 - 我把它作为默认值(DetectChangesBeforeSave).
有时使用POCO我听说你需要明确调用DetectChanges,但我从未见过将SaveOptions更改为none的推荐/解决方案.
您确定该问题的解决方案是将SaveOptions设置为none吗?也许你应该提供关于你得到的错误的细节(或问一个单独的问题),因为这样的改变会影响你的整个持久层.