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();
否则会出现部分映射出问题,则SQL语句大量增加的问题。