我的Asp.Net Identity用户类中还有一些其他字段:
public class User : IdentityUser
{
public string Website { get; set; }
}
我有一个用户的ViewModel:
public class UserViewModel
{
public string UserId { get; set; }
public string Website { get; set; }
}
这是我的映射:
Mapper.CreateMap<UserViewModel, User>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.UserId));
当我尝试保存新用户时失败,说Id不能为空:
public async Task<ActionResult> ExternalLoginConfirmation(UserViewModel model, string returnUrl)
{
var user = Mapper.Map<User>(model);
IdentityResult result = await UserManager.CreateAsync(user);
}
如何正确映射Id字段?
答案 0 :(得分:0)
好的,我有点像个白痴 - 当UserViewModel映射到User时,我显然不应该映射Id,因为它会自动生成。
我所做的只是解决问题的方法是从代码中删除.ForMember
。
当以相反方式映射时 - 从数据库加载用户并在View中显示它,以下代码确实可以正常映射:
Mapper.CreateMap<User, UserViewModel>()
.ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.Id));