在thenInclude()中使用new()现在和将来的EF修订?
有一种更好的写作方法,它仍然不需要分成多个查询或懒惰的装载诊所!。基本和诊所!。
NB:返回的实体不会具有更改跟踪。他们只会被阅读。我在此处尚未包含CreateBaseQuery方法的代码,因为它仅返回dbContext作为iQueryable.
List<Child> children = await CreateBaseQueryable(context, healthBoardId)
.Include(child => child.ChildStatuses)
.Include(child => child.ChildClinics)
.ThenInclude(childClinic => childClinic.Clinic ?? new Clinic())
.ThenInclude(clinic => clinic!.Base)
.Include(child => child.ChildClinics)
.ThenInclude(childClinic => childClinic.Clinic ?? new Clinic())
.ThenInclude(clinic => clinic!.Board)
.Where(child => child.ChildStatuses.Any(status => status.ACounter >= 2))
.Where(child => child.ChildClinics.Any(
clinic => !clinic.IsDeleted &&
clinic.Clinic != null &&
(
clinic.Clinic.ClinicType == (int)ClinicType.Type1||
clinic.Clinic.ClinicType == (int)ClinicType.Type2)
)
)
.ToListAsync();
Include
和
ThenInclude
不在乎这些属性是否为无效/无效,只是为了发出内部与左联接的目的。它与对象的LINQ不同,或者直接访问null属性时。