[英]Automapper: How to map one source to multiple destinations
我有以下示例實體:
public class User
{
public string Username { get; set; }
public string Password { get; set; }
pubilc HashSet<UserRole> Roles { get; set; }
}
public class Role
{
public string RoleName { get; set; }
public HashSet<UserRole> Users { get; set; }
}
public class UserRole
{
public int UserId { get; set; }
public virtual User User { get; set; }
public int RoleId { get; set; }
public virtual Role Role { get; set; }
}
以及以下 Dto:
public class UserModel
{
public string Username { get; set; }
public string Password { get; set; }
pubilc HashSet<RoleModel> Roles { get; set; }
}
public class RoleModel
{
public string RoleName { get; set; }
public HashSet<UserModel> Users { get; set; }
}
使用以下 AutoMapper 配置:
CreateMap<User, UserModel>();
CreateMap<Role, RoleModel>();
CreateMap<UserRole, UserModel>()
.ConstructUsing((src, ctx) => ctx.Mapper.Map<UserModel>(src.User));
CreateMap<UserRole, RoleModel>()
.ConstructUsing((src, ctx) => ctx.Mapper.Map<RoleModel>(src.Role));
但是這種配置會導致 iis 停止而沒有任何錯誤!
此配置是否適合將一個源映射到多個目標?
您可以嘗試以下映射:
public MapperConfig()
{
CreateMap<User, UserModel>();
CreateMap<UserRole, RoleModel>()
.ForMember(des=>des.RoleName,opt=>opt.MapFrom(src=>src.Role.RoleName));
CreateMap<Role, RoleModel>();
CreateMap<UserRole, UserModel>()
.ForMember(des => des.Username, opt => opt.MapFrom(src => src.User.Username))
.ForMember(des => des.Password, opt => opt.MapFrom(src => src.User.Password));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.