实体框架中的视图无法更新

5
我有一个视图,其中包含多个表的数据。
当我调用该视图时,结果会加载到内存中并存储。当我对其他表进行一些更改以影响该视图时,该视图不知道任何更改。
因此,当我再次调用该视图时,例如Get()方法,EF将返回存储数据的值。
当然,我想要更新后的数据。我如何强制视图从数据库获取数据而不是从内存中获取?或者是否有更好的策略?
最好能让视图意识到正在进行的更改。这可以通过实体配置实现,也许可以使用HasRequired()方法来映射FK吗?
编辑:我正在使用存储库和工作单元模式。因此,我没有每次创建和处理新上下文。请考虑这一点。

你是否在使用EF与WCF结合?你的应用程序是什么类型的? - S P
不,这是一个WPF应用程序。我调试了代码,所以我知道从EF返回的实际数据。 - Mert Akcakaya
但是你是直接和DbContext通信吗? - S P
@Sander Pham,Nop,请看一下我的编辑。 - Mert Akcakaya
1个回答

10
当您在视图上执行Linq查询时,请使用AsNoTracking()扩展方法。这将强制EF始终使用来自数据库而不是内存的数据:
var result = from x in context.ViewSet.AsNoTracking()
             select x;

EF不会自动处理数据刷新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接