小编Kry*_*zal的帖子

如何在Entity Framework 6中禁用模型缓存(Code First方法)

MSDN文档之后我们可以阅读:

然后缓存该上下文的模型,该模型适用于app域中上下文的所有其他实例.可以通过在给定的ModelBuidler上设置ModelCaching属性来禁用此缓存,但请注意,这会严重降低性能.

问题是模型构建器不包含任何名为ModelCaching的属性.

如何禁用模型缓存(例如,在运行时更改模型配置)?

c# caching ef-code-first entity-framework-6 ef-model-builder

14
推荐指数
2
解决办法
4443
查看次数

在实体框架中使用DbSet <TEntity> .Local属性

MSDN文档之后,我们可以使用Local属性直接从上下文获取本地/缓存数据,而无需对数据源的其他请求:

获取一个ObservableCollection,它表示此集合中所有已添加,未更改和已修改实体的本地视图.
(...)
通过使用数据填充集合,此属性可用于数据绑定,例如,使用Load扩展方法,然后通过此属性绑定到本地数据.

问题是,代码不起作用(Local为空):

context.SampleEntities.Select(x => new { x.A, x.B }).Load();
// context.SampleEntities.Local.Count is 0
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,它似乎正常工作:

context.SampleEntities.Load();
// context.SampleEntities.Local.Count is not 0
Run Code Online (Sandbox Code Playgroud)

也许有人可以解释使用Local属性的正确方法是什么?
更重要的是,如何将它与部分加载的实体一起使用,如上面的情况?

c# caching entity-framework local dbset

6
推荐指数
1
解决办法
5258
查看次数