问题
It is working code;
IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).(Include"Contexts.AdditionalProperties.Field");
But you know that it could not produce compile time error if we made mistake in string statement in "Contexts.AdditionalProperties.Field"
I would like to write code below;
IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).Include(p => p.Contexts);
But above statement could not give chance to define AdditionalProperties and Field.
What should we do?
I would like to write as more than one include for build query.
Thanks.
回答1:
If AdditionalProperties is a single reference to another object:
using System.Data.Entity;
...
IQueryable<Product> productQuery = ctx.Set<Product>()
.Include(p => p.Contexts.AdditionalProperties.Field)
.Where(p => p.Id == id);
If AdditionalProperties is a collection then you can use the Select method:
IQueryable<Product> productQuery = ctx.Set<Product>()
.Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field))
.Where(p => p.Id == id);
Don't forget to import System.Data.Entity namespace in your class file!
来源:https://stackoverflow.com/questions/4750900/multi-level-includes-in-codefirst-entityframework