我有一个查询将返回如下所示的实体数组:
var collection = db.Items.ToArray();
现在是否可以同时从这些项目中加载相关数据(不使用延迟加载):
这是实体类:
public class Item
{
public int Id { get; set; }
public virtual SecondaryItem Secondary { get; set; }
}
我需要在检索到数组中的主要项目后加载collection
中的每个辅助项目,因此我无法在原始查询中使用Include方法。
这可能吗?
修改:我的意思是我更愿意将它们全部加载到一个查询中而不是逐个加载。
答案 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的解决方案也会起作用;这只是更加优化了。