gpt4 book ai didi

c# - 在 Entity Framework 中使用 DbSet.Local 属性

转载 作者:太空狗 更新时间:2023-10-29 21:27:21 25 4
gpt4 key购买 nike

正在关注 MSDN documentation我们可以使用 Local 属性直接从上下文中获取本地/缓存数据,而无需对数据源进行额外请求:

Gets an ObservableCollection that represents a local view of all Added, Unchanged, and Modified entities in this set.
(...)
This property can be used for data binding by populating the set with data, for example by using the Load extension method, and then binding to the local data through this property.

问题是,代码不工作(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 属性的正确方法是什么?
更重要的是,如何将它用于部分加载的实体,如上例所示?

最佳答案

这是预期的行为。本地缓存在 DbContext 对象的生命周期内由您从数据库加载的实体。带查询:

context.SampleEntities.Select(x => new { x.A, x.B })

您没有向应用程序内存加载 SampleEntity 对象,而只有它的属性 A 和 B。Select 也被转换为 sql 查询以限制从查询返回的行,从而提高性能。

关于c# - 在 Entity Framework 中使用 DbSet<TEntity>.Local 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29716884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com