是否可以加载实体集合的导航属性

本文关键字:导航 属性 集合 实体 加载 是否 | 更新日期: 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;