当我直接在数据库中编辑数据时,修改的字段不会在ENTITY FRAMEWORK CONTEXT
中更新,只会更新新行和已删除的行。 (在整个工作流程中使用一个ObjectContext
)
答案 0 :(得分:1)
是。上下文就像一个除数据库之外的缓存内存。这没有什么不对,PLUS !, Context就是为此而制作的!因此不建议在整个系统中使用单个Context(参见Unity of Work)。
问:好的,但我想在整个工作流程中只使用一个Context,这是一个问题。答:只要您需要将Context更新为数据库,就需要刷新上下文。
我们有2个选项可以解决这个问题:
1 - 只需刷新您想要的内容,Context就有Refresh()
方法。
示例代码:
Context.Refresh(RefreshMode.StoreWins, WhatYouNeedToRefresh);
文档:
http://msdn.microsoft.com/en-us/library/bb896255.aspx
2 - 您可以设置Context = null,然后重新创建,它将刷新整个上下文,但我认为这不好。我认为让你想要的东西是最好的选择。
现在只是为了开玩笑,使用Entity Framework就像一场婚姻,你会嫁给它的好事和坏事! :)
答案 1 :(得分:0)
如果它对其他人有帮助 - 看起来在EF 6.0中不再存在Context.Refresh。
对我来说有用的是:
Context.Entry(WhatYouNeedToRefresh).Reload();