简体   繁体   English

Automapper嵌套映射3个级别

[英]Automapper nested mapping 3 levels

i have the following problem, i need access to items of sales line from salesheader, when i try access by entity works fine by lazy loading, but i try map with Automapper 6 can´t access to Item from sales header 我遇到以下问题,当我尝试按实体的访问方式通过延迟加载可以正常工作时,我需要从salesheader访问销售行项目,但是我尝试使用Automapper 6映射就无法从sales header访问项目

thanks 谢谢

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);

Done! 完成! Dont use lazy loading, it creates a mess of 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();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM