Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# &引用;UserId字段是必需的";-实体验证错误_C#_Asp.net_Asp.net Mvc_Entity Framework_Asp.net Identity - Fatal编程技术网

C# &引用;UserId字段是必需的";-实体验证错误

C# &引用;UserId字段是必需的";-实体验证错误,c#,asp.net,asp.net-mvc,entity-framework,asp.net-identity,C#,Asp.net,Asp.net Mvc,Entity Framework,Asp.net Identity,我正在为我的MVC(5)应用程序使用基于实体框架的ASP.NETIdentity 问题: 当我想注册一个新用户时,我会得到一个实体验证错误。 我查看了validation error属性,在这一行中得到了2个错误(实际上都是相同的): var result = await UserManager.CreateAsync(user, model.Password); 错误: 现在……我不知道这个“UserId”字段来自哪里。 我查看了IdentityUser基类,它也不属于那

我正在为我的MVC(5)应用程序使用基于实体框架的ASP.NETIdentity

问题:

当我想注册一个新用户时,我会得到一个实体验证错误。 我查看了validation error属性,在这一行中得到了2个错误(实际上都是相同的):

         var result = await UserManager.CreateAsync(user, model.Password);
错误:

现在……我不知道这个“UserId”字段来自哪里。 我查看了IdentityUser基类,它也不属于那个类,只有一个“Id”字段可以正常工作

如果需要更多信息,请在评论plz中提及

有人知道这个领域是什么吗?如何解决这个问题

编辑: 忘了提到我在dbinitializer的seed方法中创建了一个基本用户……这很好。但在控制器中,我得到了这个错误

控制器和相关操作:

    //
    //POST : /Account/Register
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> register(Register_ViewModel model)
    {
        UserManager.UserValidator = new MyUserValidation();

        //Complete User Object if Model is Valid
        if (ModelState.IsValid)
        var user = new Employee
        {
         .......
        }

        //Store Claims
            ........


                // Where i get the error
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInAsync(user, IsPersistent: false);
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    AddErrors(result);
                }                             
        }
        return View(model);
    }
//
//职位:/Account/Register
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务寄存器(寄存器\视图模型)
{
UserManager.UserValidator=新的MyUserValidation();
//如果模型有效,则完成用户对象
if(ModelState.IsValid)
var user=新员工
{
.......
}
//商店索赔
........
//我从哪里得到错误
var result=await UserManager.CreateAsync(用户、模型、密码);
if(result.successed)
{
等待信号同步(用户,ispersist:false);
返回重定向到操作(“索引”、“主页”);
}
其他的
{
加法器(结果);
}                             
}
返回视图(模型);
}
视图:

     @model Univercity_Project.Models.ViewModels.Register_ViewModel

     @{
     ViewBag.Title = "Register_tab";
     Layout = "~/Views/Shared/Layout.cshtml";
     }

     <h2>Register_tab</h2>


     @using (Html.BeginForm("Register","Account",FormMethod.Post)) 
     {
     @Html.AntiForgeryToken()

     <div class="form-horizontal">
    <h4>Employee</h4>
    <hr />
        <!-- Nav tabs -->
        <ul class="nav nav-tabs" role="tablist">
          <!-- Some Nav Tabs Here! -->
        </ul>

        <!-- Tab panes -->
        <div class="tab-content">
        <!-- Nav-tabs Content  Here! -->  

        <div class="form-group">
                    <div class="col-md-offset-2 col-md-10">
                        <input type="submit" value="Submit" class="btn btn-     default" />
                    </div>
                </div>
            </div>
@model Univercity\u Project.Models.ViewModels.Register\u ViewModel
@{
ViewBag.Title=“注册\选项卡”;
Layout=“~/Views/Shared/Layout.cshtml”;
}
“注册”选项卡
@使用(Html.BeginForm(“Register”、“Account”、FormMethod.Post))
{
@Html.AntiForgeryToken()
雇员

员工(或“应用程序用户”)模型:

public类员工:IdentityUser
{
公共字符串\u编号{get;set;}
公共字符串{get;set;}
公共国际标识{get;set;}
公共字符串First_Name{get;set;}
公共字符串Last_Name{get;set;}
公共字符串父名称{get;set;}
公共字符串Birth_Place{get;set;}
公共日期时间出生日期{get;set;}
公共字符串序列_字母{get;set;}
public int Serial_Numeric{get;set;}
在{get;set;}支持下的{u人}的公共整数{u
//
公共虚拟就业状态就业状态{get;set;}
公共int就业信息ID{get;set;}
公共虚拟婚姻状态婚姻状态{get;set;}
公共婚姻信息ID{get;set;}
公共虚拟作业\状态作业\状态{get;set;}
公共虚拟学术状态学术状态{get;set;}
公共虚拟电话号码电话号码{get;set;}
公共虚拟战争记录战争记录信息{get;set;}
公共虚拟地址{get;set;}
公共虚拟阻抗阻抗阻抗信息{get;set;}
}

提前感谢您。

在您的用户POCO的EF映射中,Id字段是否已设置为Identity:

`属性(c=>c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)

编辑:

我将在这个答案中包含我的评论,这导致了解决方案:

还有其他引用用户ID的位置。请尝试将以下内容添加到测试中:
user.Claims.Add(新IdentityUserClaim{UserId=user.Id});user.Roles.Add(新IdentityUserRole{UserId=user.Id});
确定以下是解决方案:

在我添加声明的部分中,我不知道我应该为UserId属性赋值,这就是我所做的:

                    user.Claims.Add(new IdentityUserClaim() { ClaimType = ClaimTypes.Gender, ClaimValue = user.Gender});
以下是我应该做的:

                    user.Claims.Add(new IdentityUserClaim() { ClaimType = ClaimTypes.Gender, ClaimValue = user.Gender, UserId = user.Id });

也许您可以通过添加html表单来编辑您的问题,该表单将启动发布到您的控制器。正如我所说的ID字段工作正常。我的问题是“UserId”字段。请查看具有UserId属性的IdentityUserLogin对象。试着如下设置:
user.Logins.Add(new IdentityUserLogin()){LoginProvider=youValue1,ProviderKey=youValue2,UserId=user.Id});
执行了此操作。仍然收到错误。请发布员工模型定义添加的员工模型。另外,注册视图有一个视图模型。需要吗?
                    user.Claims.Add(new IdentityUserClaim() { ClaimType = ClaimTypes.Gender, ClaimValue = user.Gender, UserId = user.Id });