1. 程式人生 > >Automapper複雜型別問題小結

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語句大量增加的問題。