2010-04-01 3 views
0

у меня есть этот код:Entity Framework не загружая отношения даже при использовании включают

 Category selectedCategory = (from c in DB.Category.Include("SubCategory") 
       join a in DB.Accessory on c.AccCatUID equals a.Category.AccCatUID 
       where a.AccUID == currentAccessory.AccUID 
       select c).FirstOrDefault(); 

Он отлично работает, selectedCategory получает населенную, как ожидалось. BUT selectedCategory имеет дочернюю таблицу 'SubCategory', которая не загружается, даже если там есть. Он не загружен, пока я это сделать:

  selectedCategory.SubCategory.Load(); 

Почему я должен позвонить нагрузки явно для того, чтобы загрузить таблицу ребенка?

EDIT: Использование .net 3.5 VS2008

+0

ли вы ключи сущностей установить для ПОДКАТЕГОРИИ? – Nix

+0

Может помочь указать, какую версию сущности-рамки вы используете, так как Lazy loading и доступ к отношениям FK изменились в 4.0 –

ответ

0

включаемой в настоящее время упал, потому что он связан с первым ObjectQuery и не является результатом множества, что возвращается.

Я думаю, вам просто нужно переработать ваш запрос? Если мне не хватает чего-то, чего вы действительно хотите ниже, я не видел, чтобы вы использовали присоединение аксессуаров.

 Category selectedCategory = (
      from c in DB.Category.Include("SubCategory") 
       where c.AccCatUID == currentAccessory.AccUID 
      select c 
     ).FirstOrDefault(); 

или от Otherside

  var fromAccessoryCategory = 
      (from a in DB.Accessory.Include("Category.SubCategory") 
      where a.AccUID == currentAccessory.AccUID 
      select a.Category).FirstOrDefault(); 
+0

Это именно то, что я хотел сделать изначально, но у меня нет свойства AccCatUID, напрямую доступного на 'c ». Я получаю это: «DataLayer.Accessory» не содержит определения для «AccCatUID» и не используется метод расширения «AccCatUID», принимающий первый аргумент типа «DataLayer.Accessory» (вам не хватает директивы использования или сборки ссылка?) – Dilbert789

+0

вы пытаетесь получить после этого с помощью аксессуаров? Я только что обновил сообщение выше? Я надеюсь, что мощность составляет от 1 до 1. – Nix

+0

И я не понимаю вашу ошибку? когда вы делаете c.AccCatUID своей категорией, а не аксессуаром? – Nix

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