实体框架中的视图不会更新

Mer*_*aya 4 entity-framework view

我有一个视图,其中包含来自多个表的数据.

当我调用该视图时,结果将加载到内存中并存储.在对应该影响视图的其他表进行一些更改后,视图对更改一无所知.

因此,当我再次调用该视图时,例如Get()方法,EF返回存储数据的值.

当然我想要更新的数据.如何强制视图从数据库而不是从内存中获取数据?还是有更好的策略?

如果我能让视图意识到正在进行的更改,那就更好了.这可以通过实体配置实现,也许可以通过使用HasRequired()方法来映射FK?

编辑: 我正在使用存储库和工作单元模式.所以我不是每次都创建和处理新的上下文.请考虑一下.

Lad*_*nka 8

在视图使用AsNoTracking()扩展方法上执行Linq查询时.这将强制EF始终使用数据库而不是内存中的数据:

var result = from x in context.ViewSet.AsNoTracking()
             select x;
Run Code Online (Sandbox Code Playgroud)

EF不会为您处理任何自动数据刷新.