是否可以加载实体集合的导航属性
本文关键字:导航 属性 集合 实体 加载 是否 | 更新日期: 2023-09-27 18:28:27
我有一个查询,它将返回一个实体数组,如下所示:
var collection = db.Items.ToArray();
现在是否可以一次从这些项目加载相关数据(不使用延迟加载):
这是实体类:
public class Item
{
public int Id { get; set; }
public virtual SecondaryItem Secondary { get; set; }
}
在检索到数组中的主项后,我需要加载collection
中的每个Secondary项,所以我不能在原始查询中使用Include方法。
这可能吗?
编辑:我的意思是,我更喜欢将它们全部加载到一个查询中,而不是逐个加载。
只需运行以下命令:
db.Items.Select(x => x.SecondaryItem).Distinct().Load();
DbContext
将负责初始化具有相应对象的所有现有Item.SecondaryItem
引用。
注意,杜安的解决方案也会奏效;这只是稍微优化了一点。
根据注释重试。你能用第二个查询把它们全部拉出来吗?
var itemIds = collection.Select(i => i.ID);
var query = from s in db.SecondaryItems
where itemIds.Contains(s.ItemID)
select s;