2017-05-19 70 views
0

我有以下問題,我需要訪問salesheader的銷售線條項目,當我嘗試訪問的實體通過延遲加載工作正常,但我嘗試映射與Automapper 6 無法訪問從銷售標題項目自動映射器嵌套映射3級

感謝

public class SalesHeader 
{ 
    public int DocumentNo { get; set; } 
    public virtual ICollection<PostedSalesLine> SalesLines { get; set; } 
} 
public class SalesLine 
{ 
    public int LineNo { get; set; } 
    public int DocumentNo { get; set; } 
    public int ItemId { get; set; } 
    public virtual Item Item { get; set; } 
    public int Quantity { get; set; } 
    public decimal Amount { get; set; } 
} 
public class Item 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public decimal UnitCost { get; set; } 
    public decimal UnitPrice { get; set; } 
} 
       var result = unitOfWork.SalesHeader.GetById(documenNo); 
       Mapper.Initialize(cfg => cfg.CreateMap<SalesHeader, SalesHeaderDTO>() 

       return Mapper.Map<SalesHeaderDTO>(result); 

回答

0

完成! 不使用延遲加載,它創建了一個proxys的混亂

 public IEnumerable<SalesHeader> GetAllFullDocuments() 
    { 
     return SalesContext.SalesHeader.Include(sh => sh.SalesLines.Select(i => i.Item)) 
             .Include(sh => sh.SellToCustomer) 
             .Include(sh => sh.BillToCustomer) 
             .ToList(); 
    }