大家下午好!我有一个新问题:假设我的数据库中有以下实体:
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个查询。我该如何重写代码,以便框架只对数据库执行一次调用?
答案 0 :(得分:1)
您想要使用导航属性。
例如:
IQueryable<Entity1> query = DBContext.Set<Entity1>()
.Include(x => x.Navigation1)
.Include(x => x.Navigation2);
IList<Entity1> mylist = query.ToList();
然后,mylist将包含您的实体,其属性设置与您关联的实体匹配。