Automapper复杂类型问题小结

Automapper在映射时可能会遭遇无法映射出值的问题,而且可能并不会正确报错,一旦碰到这个时候需要仔细排查原因,可用的一些思路如下:

  • 将To中的无需映射字段需挨个设置为Ignore。
  • IQueryAble的ProjectTo也是支持复杂类型映射的。
  • IQueryAble执行ProjectTo时,遇到复杂类型可以不使用Include,但是一旦使用Include则需将所有的引用类型都Include进来,如
    public class ViewActionDto : IEntityDto<Guid>
        {
            public Guid Id { get; set; }
            public CommonActionDto CommonAction { get; set; }
            public ViewDto View { get; set; }
        }
    _viewActionR.GetAll()
                        //.Include(u => u.View).Include(u=>u.View.ParentView).Include(u => u.CommonAction)
                        .ProjectTo<ViewActionDto>().ToList();
    中View、View.ParentView、CommonAction都被映射了,要么不Include,一旦Include则缺一不可。

   否则会出现部分映射出问题,则SQL语句大量增加的问题。

猜你喜欢

转载自www.cnblogs.com/ceci/p/10070486.html