Avoir des problèmes avec ce IncludeFilter et inclure plusieurs niveaux. J'utilise Entity Framework 6 Plus.
Voici l'exemple fourni par https://entityframework-plus.net/query-include-filter sous l' Load multiple levels
tête Load multiple levels
.
Cela fonctionne, mais renvoie plus d’enregistrements de garantie que je le souhaite.
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();
Cela fonctionne mais .Coverage
est null, mais c’est le plus proche de l’exemple.
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();
Cela ne fonctionne pas du tout car apparemment avec IncludeFilter
vous devez inclure une clause 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();
Celui-ci fonctionne mais il ne charge pas beaucoup
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
avec IncludeFilter
ou IncludeOptimized
. IncludeFilter
Dans votre exemple le plus proche, vous avez manqué d'inclure "Y.Coverage"
Ce sont actuellement la limitation de la bibliothèque.
Voici ce que vous recherchez:
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();
Cela ne fonctionne pas du tout car apparemment avec IncludeFilter, vous devez inclure une clause where.
Non, vous n'avez pas.