C# 实体框架-通过一个请求中的多个导航属性加载实体

C# 实体框架-通过一个请求中的多个导航属性加载实体,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,大家下午好!我有一个新问题:假设我的数据库中有以下实体: 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 Ent

大家下午好!我有一个新问题:假设我的数据库中有以下实体:

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();
IQueryable query=DBContext.Set()
.包括(x=>x.Navigation1)
。包括(x=>x.Navigation2);
IList mylist=query.ToList();
然后,mylist将包含属性集与关联实体匹配的实体