2011-01-20 7 views
25

Это рабочий код;Многоуровневое включает в 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); 

Но вышеприведенное заявление не могло дать возможности определить дополнительные свойства и поле.

Что нам делать?

Я хотел бы написать, как более одного включить для запроса построения.

Спасибо.

ответ

43

Если AdditionalProperties является одной ссылки на другой объект:

using System.Data.Entity; 
... 
IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Field) 
     .Where(p => p.Id == id); 


Если AdditionalProperties коллекция, то вы можете использовать Выбрать метод:

IQueryable<Product> productQuery = ctx.Set<Product>() 
     .Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field)) 
     .Where(p => p.Id == id); 

Дон Не забудьте импортировать System.Data.Enti ty пространство имен в вашем файле класса!

+1

Вы избили меня до этого;) –

+0

Я должен сказать вам, что это была не «честная игра ... Так как я ответил на этот вопрос несколько месяцев назад здесь. Извини чувак! –

+0

Спасибо за быстрый ответ! Как я могу добавить другое, где contion для AdditionalProperties, который является объектом List <> type? –

Смежные вопросы