2016-09-16 6 views
1

Угадайте, мне не хватает, чтобы уведомить свойство навигации в EF во время загрузки вложенного графика. Пожалуйста, дайте мне знать, что мне не хватает.Entity Framework eager загружает граф вложенных объектов, ошибки в недопустимом имени столбца

Мой упрощенный график Объект

Product (ProductId, IEnumerable<Task>, ProductStatusId, ProductStatus) 

ProductStatus (ProductStatusId, Description) 

Task (TaskId, ProductId, TaskStatusId, TaskStatus) 

TaskStatus (TaskStatusId, Description) 

Попытка загрузить продукт => с его задачи => с их TaskStatus

.Include(p => p.ProductStatus) 
.Include(p => p.Tasks) 
.Include(p => p.Tasks.Select(t => t.TaskStatus)) 

Получение следующее сообщение об ошибке:

{"Недопустимое имя столбца" Ta skStatus_ProductStatusId. \ г \ nInvalid столбец имя 'ProductStatusId'}

+0

Звучит как установка связи проблема. Пожалуйста, разместите свои упрощенные классы с свойствами свойств/свойств навигации и аннотациями данных/свободной настройкой. –

+1

Вы правы, Иван Стоев, у плохой конфигурации было неправильное имя. (Мы писали сотни конфигураций, и это сопоставление имен столбцов перепутано). –

+0

Вы уверены, что ваша база данных обновлена ​​и соответствует вашей объектной модели? – bubi

ответ

0

Это должно работать

_yourContext.Product 
    .Include(p => p.ProductStatus) 
    .Include(p => p.Tasks.Select(t => t.TaskStatus)) 

Вам не нужно будет

.Include(p => p.Tasks) 

Поскольку».INCLUDE (р => р .Tasks.Select (t => t.TaskStatus)) "получит Задачи и TaskStatus из коллекции задач.