EntityState.Detached,我需要重新加载吗?
所有,
首先使用.Net 4和EF 4.4数据库。
假设我有一个DbContext。 我从这个DbContext加载数据,做东西,然后从DbContext分离所有东西,并处理DbContext。
然后,我创建一个新的DbContext(相同的模型),并加载与第一个DbContext中的数据重叠的其他数据。 在执行我的查询之前,是否需要执行Entry()。Reload()或当Detatched Entities被加载到新的上下文时自动刷新。
我问的原因是因为我遇到了一个问题,在使用相同的DbContext时,我不得不手动重新挂接处于分离状态的实体并调用Reload。 所以我想知道是否在这种情况下,处于分离状态的实体与之前的DbContext是简单地附加到新的DbContext还是它们也被刷新?
是的,我知道我可以设置一个简单的测试,但很想知道其他人是否已经这样做,以便他们可以与SO Universe分享他们的发现,并且避免其他人对此有所疑问。
希望这个问题是有道理的。
谢谢。
实体不会自动附加到新的上下文。 您必须手动附加它们。 如果你只是加载重叠的数据,你的实体将不会被更新。 您必须通过调用重新加载或通过使用ObjectContext
和MergeOption
查询来强制执行此类更新。 如果您不附加分离的实体,并且只是在新的上下文中运行查询,您将获得新数据,但您将有两个重叠实体实例 - 一个与旧数据分离,另一个与新数据分离。
当它们被加载到新的上下文中时,Detatched Entities会自动刷新吗?
不,他们不会。 这很好,因为您可以附加更改的实体(这通常发生在断开的n层应用程序中)。 自动刷新会清除更改。 所以如果你想刷新,你必须手动重新加载。
链接地址: http://www.djcxy.com/p/33565.html