0

全部,

首先使用 .Net 4 和 EF 4.4 数据库。

假设我有一个 DbContext。我从这个 DbContext 加载数据,做一些事情,然后从 DbContext 中分离所有内容并处理 DbContext。

然后,我创建一个新的 DbContext(相同模型)并加载与第一个 DbContext 中的数据重叠的其他数据。在执行我的查询之前,我是否需要执行 Entry().Reload() 或者 Detatched Entities 在加载到新上下文时会自动刷新。

我问的原因是因为我在过去遇到了一个问题,当使用相同的 DbContext 时,我不得不手动重新附加处于分离状态的实体并调用 Reload。所以我想知道在这种情况下,与先前 DbContext 处于分离状态的实体是否只是简单地附加到新的 DbContext 或者它们是否也被刷新?

是的,我知道我可以设置一个简单的测试,但我很想知道是否有其他人已经这样做了,以便他们可以与 SO Universe 分享他们的发现并让其他人在一段时间内对此感到疑惑。

希望这个问题是有道理的。

谢谢。

4

2 回答 2

0

将分离实体加载到新上下文中时会自动刷新吗?

不,他们不会。这很好,因为您可以附加更改的实体(这通常发生在断开连接的 n 层应用程序中)。自动刷新将删除更改。因此,如果要刷新,则必须手动重新加载。

于 2012-11-22T10:11:06.627 回答
0

实体不会自动附加到新上下文。您必须手动附加它们。如果您只是加载重叠数据,您的实体将不会更新。您必须通过调用 Reload 或对查询使用ObjectContextand来强制进行此类更新。MergeOption如果您不附加分离的实体,而只是在新上下文中运行查询,您将获得新数据,但您将拥有两个重叠实体的实例 - 一个与旧数据分离,一个与新数据相连。

于 2012-11-22T10:04:02.667 回答