Asp.net-Mvc

Automapper 從嵌套類映射到單個(展平)

  • March 23, 2022

這是我的來源:

public class User
{
   public int UserId { get; set; }

   public Address Address { get; set; }
}

public class Address
{
   public string Address { get; set; }
   public string State {get; set; }
}

這是我的目的地:

public class UserVM
{
   public int UserId { get; set; }

   public string Address { get; set; }
   public string State { get; set; }
}

如何進行映射?當他們說展平是自動的時,正常的創建地圖不起作用。

如果您將目標類屬性名稱更改為AddressStreetand AddressState,AutoMapper 將按照慣例將它們Address.Street與源匹配到 and Address.State

public class UserVM
{
   public int UserId { get; set; }

   public string AddressStreet { get; set; } // User.Address.Street
   public string AddressState { get; set; }  // User.Address.State
}

或者,您保留目標屬性名稱並使用自定義成員映射:

Mapper.CreateMap<User, UserVM>()
   .ForMember(dest => dest.Street, opt => opt.MapFrom(src => src.Address.Street))
   .ForMember(dest => dest.State, opt => opt.MapFrom(src => src.Address.State));

有關更多資訊,請參閱投影展平的 AutoMapper 文件。

引用自:https://stackoverflow.com/questions/8058783