2016-03-14 4 views
0

У меня есть belowe Классы:Загрузка Вложенные коллекции в Entity Framework

1- PurchaseMaster :Has collection >> PurchaseDetail 
2- PurchaseDetail :Has Product 
3- Product 

Я хочу получить PurchaseMaster с Detail и продукта. Я стараюсь с belowe запросов, но его возврата ошибки:

var purchaseMasterModel = _purchaseMasters 
     .Include("StoreMasters.Details") 
     .Include("ProductHeader") 
     .FirstOrDefault(row => row.Code == code); 

var purchaseMasterModel = _purchaseMasters 
     .Include("StoreMasters.Details") 
     .Include("StoreMasters.Details.ProductHeader") 
     .FirstOrDefault(row => row.Code == code); 

var purchaseMasterModel = _purchaseMasters 
     .Include("StoreMasters.Details") 
     .Include("Details.ProductHeader") 
     .FirstOrDefault(row => row.Code == code); 

Я получаю эту ошибку:

Заданный Включить путь не является допустимым. EntityType «DataLayer.Context.StoreDetail» не объявляет свойство навигации с именем «ProductHeader». мои классы, как это:

public class PurchaseMaster:BaseEntity 
{ 
    public virtual ICollection<PurchaseDetail> PurchaseDetails { get; set; } 
} 



public class PurchaseDetail:BaseEntity 
    { 
    public PurchaseMaster PurchaseMaster { get; set; } 
    public Guid PurchaseMasterId { get; set; } 
    public ProductHeader ProductHeader { get; set; } 
    public Guid ProductHeaderId { get; set; } 
    } 

public class ProductHeader:BaseEntity 
{ 
    public virtual ICollection<PurchaseDetail> PurchaseDetails { get; set; } 
} 
+0

Что такое ошибка? – dotctor

+0

Почему бы не использовать включенную перегрузку, которая принимает переключатель свойств? '.Include (x => x.SomeProperty)'? – dotctor

+0

как? вы можете сказать, пожалуйста? –

ответ

1

Вы уже выбирая PurchaseMaster, так что вы не должны указывать StoreMaster.

Вы также должны использовать имена свойств. ProductHeader имеет свойство PurchaseDetails, но не Подробнее.

Следующий запрос должен работать:

var purchaseMasterModel = _purchaseMasters 
     .Include("PurchaseDetails") 
     .Include("PurchaseDetails.ProductHeader") 
     .FirstOrDefault(row => row.Code == code); 
Смежные вопросы