Многоуровневое включение в CodeFirst - EntityFrameWork
Это рабочий код;
IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).(Include"Contexts.AdditionalProperties.Field");
Но вы знаете, что он не смог создать ошибку времени компиляции, если мы допустили ошибку в строковом выражении в "Contexts.AdditionalProperties.Field"
Я хотел бы написать код ниже;
IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).Include(p => p.Contexts);
Но вышеприведенное утверждение не могло дать возможности определить дополнительные свойства и поле.
Что нам делать?
Я хотел бы написать как более, чем один для запроса построения.
Спасибо.
Ответы
Ответ 1
Если AdditionalProperties является отдельной ссылкой на другой объект:
using System.Data.Entity;
...
IQueryable<Product> productQuery = ctx.Set<Product>()
.Include(p => p.Contexts.AdditionalProperties.Field)
.Where(p => p.Id == id);
Если AdditionalProperties является коллекцией, вы можете использовать метод Select:
IQueryable<Product> productQuery = ctx.Set<Product>()
.Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field))
.Where(p => p.Id == id);
Не забудьте импортировать пространство имен System.Data.Entity в свой файл класса!