1

当我直接在数据库中编辑数据时,修改的字段没有更新ENTITY FRAMEWORK CONTEXT,只有新的和删除的行被更新。ObjectContext(在整个工作流程中使用一个)

4

2 回答 2

1

是的。上下文就像数据库之外的缓存。没有错,加上!,上下文是为此而制作的!因此,不建议在整个系统中使用单个上下文(参见 Unity of Work)。

问:好的,但我想在整个工作流程中只使用一个上下文,这是一个问题。

答:每当您需要将上下文更新为数据库时,您都需要刷新上下文。

我们有 2 个选项来解决这个问题:

1 - 只是刷新你想要的,Context 有Refresh()方法。

示例代码:

Context.Refresh(RefreshMode.StoreWins, WhatYouNeedToRefresh);

文档:

http://msdn.microsoft.com/en-us/library/bb896255.aspx

2 - 您可以设置 Context = null,然后重新创建,它会刷新整个上下文,但我认为这不好。我认为刷新你想要的东西是最好的选择。

现在开个玩笑,使用Entity Framework就像是一场婚姻,你会带着它的好与坏结婚!:)

于 2013-11-10T02:59:14.173 回答
0

万一它对其他人有帮助 - 看起来 Context.Refresh 在 EF 6.0 中不再存在。

对我有用的是:

Context.Entry(WhatYouNeedToRefresh).Reload();
于 2014-04-16T10:34:01.327 回答