Проблемы с этим IncludeFilter и включением нескольких уровней.Я использую Entity Framework 6 Plus.
Это пример, который они предоставляют https://entityframework -plus.net / query-include-filter под заголовком Load multiple levels
.
Это работает, но возвращает больше записей о гарантии, чем я хочу.
db.Application.Where(x => x.ApplicationId == applicationId)
.Include(x => x.Lienholder)
.Include(x => x.Warranty.Select(y => y.Coverage.CoverageGroup))
.Include(x => x.Vehicle)
.Include(x => x.Vendor)
.First();
Это работает, но .Coverage
имеет значение null, но оно ближе всего к примеру.
db.Application.Where(x => x.ApplicationId == applicationId)
.Include(x => x.Lienholder)
.IncludeFilter(x => x.Warranty.Where(z => true).Where(z =>
z.WarrantyStatusId == 2 ||
z.WarrantyStatusId == 3 ||
z.WarrantyStatusId == 8 ||
z.WarrantyStatusId == 10
)
.IncludeFilter(x => x.Warranty.Where(z => true).Where(z =>
z.WarrantyStatusId == 2 ||
z.WarrantyStatusId == 3 ||
z.WarrantyStatusId == 8 ||
z.WarrantyStatusId == 10
).Select(y => y.Coverage.CoverageGroup))
.Include(x => x.Vehicle)
.Include(x => x.Vendor)
.First();
Это вообще не работает, потому что, очевидно, в IncludeFilter
вы должны включить предложение where
db.Application.Where(x => x.ApplicationId == applicationId)
.Include(x => x.Lienholder)
.IncludeFilter(x => x.Warranty.Where(z => true).Where(z =>
z.WarrantyStatusId == 2 ||
z.WarrantyStatusId == 3 ||
z.WarrantyStatusId == 8 ||
z.WarrantyStatusId == 10
).Select(y => y.Coverage.CoverageGroup))
.Include(x => x.Vehicle)
.Include(x => x.Vendor)
.First();
Это работает, но не требует загрузки Coverage
db.Application.Where(x => x.ApplicationId == applicationId)
.Include(x => x.Lienholder)
.IncludeFilter(x => x.Warranty.Where(z => true).Where(z =>
z.WarrantyStatusId == 2 ||
z.WarrantyStatusId == 3 ||
z.WarrantyStatusId == 8 ||
z.WarrantyStatusId == 10
)
.Include(x => x.Vehicle)
.Include(x => x.Vendor)
.First();