我有以下示例实体:
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; }
}
和以下Dtos:
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));
}