Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将ViewModel映射到IdentityUser_C#_Automapper_Asp.net Identity - Fatal编程技术网

C# 将ViewModel映射到IdentityUser

C# 将ViewModel映射到IdentityUser,c#,automapper,asp.net-identity,C#,Automapper,Asp.net Identity,我在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; }

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

好的,我有点傻-显然,在将UserViewModel映射到用户时,我不应该映射Id,因为它将自动生成

我所做的只是从代码中删除.ForMember

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

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

id的映射看起来是正确的。您可以通过在尝试创建user.Id之前检查它来进行验证。再次查看异常,确保抛出错误的是User.Id,而不是缺少的子集合。如果我快速查看它并单击基类,然后再次单击基类,则它确实为null。然后抛出EntityValidationError:Id是必需的。但是AutoMapper做了它的部分吗?如果你创建了一个新用户,并在没有AutoMapper的情况下自己映射属性,你会得到同样的错误吗?@Jansen AutoMapper正在尽自己的责任——这就是问题所在:当创建一个新用户时,我不应该映射Id!