实体框架5.0上下文重新加载

时间:2013-11-09 23:10:28

标签: sql-server vb.net entity-framework

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

2 个答案:

答案 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();