2010-08-19 2 views
0

У меня есть дочернее свойство дочернего объекта в моей сущности. У меня есть метод получить как например:LINQ - включить дочернее свойство дочернего объекта

List<T> Find(Expression<Func<T, bool>> where, 
      params Expression<Func<T, object>>[] toInclude); 

Как я обычно загрузить только первый ребенок свойство является сделать это:

myManager.Find(x => x.Id == id, x.ChildB); 

Однако, я хотел бы быть в состоянии оттянуть ChildC свойство, которое является дочерним элементом моего объекта ChildB.

Есть ли способ выполнить это с помощью подписи метода, которую я предоставил? Я знаю, что обычно я мог бы сделать .Include («ChildB.ChildC»).

Edit: Добавлен код по запросу

using(MyContext context = new MyContext()) 
{ 
    ObjectQuery<T> objectQuery = (ObjectQuery<T>)context.CreateObjectSet<T>(); 
    foreach(var include in toInclude) 
    { 
     objectQuery = objectQuery.Include(include); 
    } 

    return objectQuery.Where<T>(where); 
} 
+0

Brandon - любой шанс, что вы также могли бы включать в себя реализацию списка Find() метод заглушки ?? учитывая, что я уверен, что смогу сделать достойный удар по этой проблеме. спасибо ... –

+0

Добавлен код за запрос. – Brandon

+0

ok -gotcha, рассмотрим его и посмотрим, могу ли я добавить значение. –

ответ

0

Если вы говорите о LINQ к SQL, то вы должны настроить DataContext перед выполнением каких-либо запросов к ним.

Что-то вроде:

var options = new DataLoadOptions(); 
options.LoadWith<ChildB>(b => b.ChildC); 
dataContext.LoadOptions = options; 
+0

Я делаю LINQ-to-Entities, однако я надеялся, что разработчик сможет передать список свойств навигации, которые они хотели включают без необходимости иметь дело с Контекстом. – Brandon

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