实体框架 - 在一个请求中通过多个导航属性加载实体
本文关键字:实体 加载 属性 导航 一个 框架 请求 | 更新日期: 2023-09-27 18:30:45
大家下午好!我有一个新问题:假设我的数据库中有以下实体:
public class Entity1
{
public virtual Entity2 Navigation1 {get;set;}
public virtual Entity3 Navigation2 {get; set;}
......
}
我需要的是执行以下查询:
SELECT * FROM Entity1 ent1
join Entity2 as ent2 on ent2.Id = ent1.Entity2Id
join Entity3 as ent3 on ent3.Id = ent1.Entity3Id
如果我这样编码:
context.Entry(ent1).Reference(rep=>rep.Navigation1).Load();
context.Entry(ent1).Reference(rep=>rep.Navigation2).Load();
实体框架将执行 2 个查询。我应该如何重写代码,以便框架只执行对数据库的一次调用?
您希望利用导航属性。
例如:
IQueryable<Entity1> query = DBContext.Set<Entity1>()
.Include(x => x.Navigation1)
.Include(x => x.Navigation2);
IList<Entity1> mylist = query.ToList();
然后,MyList 将包含您的实体,其属性集与关联实体匹配。