将ViewModel映射到IdentityUser



我有一些额外的字段在我的用户类为Asp。Net身份:

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字段?

好吧,我一直有点白痴-我显然不应该映射Id时映射UserViewModel到用户,因为它将自动生成。

我所做的解决这个问题是从代码中删除.ForMember

当以另一种方式映射时-从数据库加载用户并在视图中显示它时,以下代码可以正确地进行映射:

  Mapper.CreateMap<User, UserViewModel>()
                .ForMember(dest => dest.UserId, opt => opt.MapFrom(src => src.Id));

相关内容

  • 没有找到相关文章

最新更新