当我直接在数据库中编辑数据时,修改的字段没有更新ENTITY FRAMEWORK CONTEXT
,只有新的和删除的行被更新。ObjectContext
(在整个工作流程中使用一个)
问问题
82 次
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 回答