关注MSDN documentation我们可以使用 Local 属性直接从上下文获取本地/缓存数据,而无需向数据源发出其他请求:
获取一个ObservableCollection,它表示此集合中所有已添加,未更改和已修改实体的本地视图。
(...)
通过使用数据填充集合,此属性可用于数据绑定,例如,使用Load扩展方法,然后通过此属性绑定到本地数据。
问题是,代码无效( Local 为空):
context.SampleEntities.Select(x => new { x.A, x.B }).Load();
// context.SampleEntities.Local.Count is 0
但在这种情况下,它似乎正常工作:
context.SampleEntities.Load();
// context.SampleEntities.Local.Count is not 0
也许有人可以解释使用 Local 属性的正确方法是什么?
更重要的是,如何将它与部分加载的实体一起使用,如上面的情况?
答案 0 :(得分:7)
这是预期的行为。本地缓存在DbContext对象的生命周期中由您从数据库加载的实体。查询:
context.SampleEntities.Select(x => new { x.A, x.B })
您正在向您的应用程序内存加载没有SampleEntity对象,但只加载它的A和B。选择也转换为sql查询以限制从查询返回的行,从而提高性能。