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

时间:2012-03-21 14:59:04

标签: c# entity-framework ef-code-first

我有一个查询将返回如下所示的实体数组:

var collection = db.Items.ToArray();

现在是否可以同时从这些项目中加载相关数据(不使用延迟加载):

这是实体类:

public class Item
{
    public int Id { get; set; }

    public virtual SecondaryItem Secondary { get; set; }
}

我需要在检索到数组中的主要项目后加载collection中的每个辅助项目,因此我无法在原始查询中使用Include方法。

这可能吗?

修改:我的意思是我更愿意将它们全部加载到一个查询中而不是逐个加载。

2 个答案:

答案 0 :(得分:1)

根据评论再次尝试。您可以通过第二次查询将它们全部拉出来吗?

var itemIds = collection.Select(i => i.ID);
var query = from s in db.SecondaryItems 
            where itemIds.Contains(s.ItemID) 
            select s;

答案 1 :(得分:1)

只需运行以下内容:

db.Items.Select(x => x.SecondaryItem).Distinct().Load();

DbContext将使用相应的对象初始化所有现有的Item.SecondaryItem引用。

请注意,Duane的解决方案也会起作用;这只是更加优化了。