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