在 .net core 2.2 中,我有一个像这样的模型:
我希望将数据返回到一个投影中,但对于每个类型B的对象,都需要进行一次查询以获取类型C的对象,并且还需要进行另一次查询以获取类型D的对象。我该如何避免这种行为?
这是一个典型的N+1查询问题,在这个问题中得到了解决: 如何在EF Core 2.1中避免n+1查询?
public class A
{
public ICollection<B> B { get; set; }
}
public class B
{
public ICollection<C> C { get; set; }
public ICollection<D> D { get; set; }
}
public class C
{
}
public class D
{
}
查询内容大致如下:
var query = from record in Set<A>()
where record.Id == Id
select new AProjection
{
BProjection =( from bRecord in Set<B>()
where bRecord.Id = record.BId
select new BProjection
{
CProjection = bRecord.C.Select( b => new CProjection {/* data here */ }),
DProjection = bRecord.C.Select( b => new DProjection {/* data here */ })
})
}
我希望将数据返回到一个投影中,但对于每个类型B的对象,都需要进行一次查询以获取类型C的对象,并且还需要进行另一次查询以获取类型D的对象。我该如何避免这种行为?
这是一个典型的N+1查询问题,在这个问题中得到了解决: 如何在EF Core 2.1中避免n+1查询?