【问题标题】:Automapper nested mapping 3 levelsAutomapper 嵌套映射 3 级
【发布时间】:2017-05-19 10:56:40
【问题描述】:

我有以下问题,我需要从 salesheader 访问销售行项目,当我尝试通过延迟加载通过实体访问时可以正常工作,但我尝试使用 Automapper 6 进行映射 无法从销售标题访问项目

谢谢

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

【问题讨论】:

    标签: c# entity-framework-6 automapper


    【解决方案1】:

    完成! 不要使用延迟加载,它会创建一堆代理

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-17
      • 2017-07-20
      • 2020-02-04
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多