Entity framework 4 不同的EF 4保存选项对ObjectContext有什么影响?

Entity framework 4 不同的EF 4保存选项对ObjectContext有什么影响?,entity-framework-4,Entity Framework 4,我正在尝试解决一个与此处概述的错误非常相似的错误: 看来解决方案(无可否认,我还没有尝试过)是将System.Data.Objects.SaveOptions.None作为SaveChanges()方法的SaveOptions参数传递 因此,在我这么做之前,我试图确切地了解不同的SaveOptions是如何工作的(None、AcceptAllChangesAfterSave、DetectAllChanges)。我还没有找到一个明确的解释,但是,我也不知道什么是默认的。有人能澄清一下吗 谢谢 更

我正在尝试解决一个与此处概述的错误非常相似的错误:

看来解决方案(无可否认,我还没有尝试过)是将System.Data.Objects.SaveOptions.None作为SaveChanges()方法的SaveOptions参数传递

因此,在我这么做之前,我试图确切地了解不同的SaveOptions是如何工作的(None、AcceptAllChangesAfterSave、DetectAllChanges)。我还没有找到一个明确的解释,但是,我也不知道什么是默认的。有人能澄清一下吗

谢谢

更新:我在这里发布了实际问题:

简而言之(据我所知):

SaveOptions.DetectChangesBeforeSave
:这是默认设置。执行此操作时,将调用该方法以在OSM中同步附加实体

SaveOptions.AcceptAllChangesAfterSave
:执行此操作时,将调用该方法-这是OSM的核心,其中图形中的实体将被迭代、寻址并设置为未更改/分离

SaveOptions.None
:执行此操作时,更改将立即保存-根本不同步。图表中的内容就是要保存的内容

根据我的经验,我没有改变这一点——我将其保留为默认值(DetectChangesBeforeSave)

有时我听说使用POCO时需要显式调用
DetectChanges
,但我从未见过将SaveOptions更改为none的建议/解决方案

您确定该问题的解决方案是将SaveOptions设置为none吗?也许你应该提供你所遇到的错误的详细信息(或者问一个单独的问题),因为这样的更改会影响你的整个持久层。

简短的更正

SaveOptions.DetectChangesBeforeSave:这是默认设置。当你这样做的时候 在ObjectContext.SaveChanges()中,调用方法DetectChanges()以 OSM中的同步附加实体

SaveChanges是
SaveChanges(SaveOptions options)
方法的重载版本,此无参数版本调用

SaveChanges(SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave)

SaveOptions是一个标志枚举,总之,
SaveOptions.DetectChangesBeforeSave | SaveOptions.AcceptAllChangesAfterSave
SaveChanges()
的默认值,而不是
DetectChangesBeforeSave

谢谢-这正是我提出这个问题的原因,因为修复这一个问题会影响我的整个应用程序。我很不愿意用一个我不完全理解的解决方案来做这件事。你说OSM是指什么?编辑:ObjectStateManager。明白了。:)是的,我应该发布一个问题,因为这是在另一个问题中声明的唯一解决方案,它声称对我的情况有效。但这似乎是完全相同的问题。@morganpdx-如何设置EF?您是使用默认代码生成还是使用POCO?如果是,您是否使用任何更改跟踪(例如自跟踪实体、代理对象等)。发布一个包含此信息和错误/场景/问题的问题。不,使用默认代码生成。我肯定会在今晚或明天第一件事上发布这个问题。我怀疑OSM中可能有一些伪造的实体——首先尝试测试这个理论。哦,顺便说一句,答案很好!:)