Tener problemas con este IncludeFilter e incluir varios niveles. Estoy usando Entity Framework 6 Plus.
Este es el ejemplo que proporcionan https://entityframework-plus.net/query-include-filter bajo el encabezado Load multiple levels
.
Esto funciona, pero devuelve más registros de garantía de los que quiero.
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();
Esto funciona pero .Coverage
es nula, pero es la más cercana al ejemplo.
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();
Esto no funciona en absoluto porque aparentemente con IncludeFilter
tiene que incluir una cláusula 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();
Éste funciona pero no tiene mucha carga Cobertura
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();
Include
con IncludeFilter
o IncludeOptimized
. IncludeFilter
En su ejemplo más cercano, omitió incluir "Y.Coverage"
Esos son actualmente la limitación de la biblioteca.
Esto es lo que buscas:
db.Application.Where(x => x.ApplicationId == applicationId)
.IncludeFilter(x => x.Lienholder)
.IncludeFilter(x => x.Warranty.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))
.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)))
.IncludeFilter(x => x.Vehicle)
.IncludeFilter(x => x.Vendor)
.First();
Esto no funciona en absoluto porque aparentemente con IncludeFilter tiene que incluir una cláusula where
No, no tienes.