Kry*_*zal 6 c# caching entity-framework local dbset
在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属性的正确方法是什么?
更重要的是,如何将它与部分加载的实体一起使用,如上面的情况?
这是预期的行为.本地缓存在DbContext对象的生命周期中由您从数据库加载的实体.带查询:
context.SampleEntities.Select(x => new { x.A, x.B })
Run Code Online (Sandbox Code Playgroud)
你正在加载你的应用程序内存没有SampleEntity对象,但只有它的proepities A和B.选择也转换为sql查询,以限制从查询返回的行,从而提高性能.