Entity framework “解决方案”;一个或多个实体的验证失败。见';实体验证错误';有关更多详细信息,请参阅;

Entity framework “解决方案”;一个或多个实体的验证失败。见';实体验证错误';有关更多详细信息,请参阅;,entity-framework,validation,asp.net-mvc-5,Entity Framework,Validation,Asp.net Mvc 5,我遇到了这个错误,它没有提供任何关于根本原因的细节,但我找到了问题所在。我想与大家分享,这样其他遇到它的人就可以成功地解决这个问题 我上过以下课程: public class BankUser : IdentityUser, IUserProfile { #region IUserProfile Members [Display(Name = "First Name")] public string FirstName { get; set; } [Di

我遇到了这个错误,它没有提供任何关于根本原因的细节,但我找到了问题所在。我想与大家分享,这样其他遇到它的人就可以成功地解决这个问题

我上过以下课程:

    public class BankUser : IdentityUser, IUserProfile
{
    #region IUserProfile Members
    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Last Name")]
    public string LastName { get; set; }

    [Required]
    [Display(Name = "Email Address")]
    [EmailAddress(ErrorMessage="Invalid Email Address")]
    public string Email { get; set; }

    [Display(Name = "Time Zone")]
    public int TimeZone { get; set; }
    public Dictionary<string, string> TimeZoneOptions
    {
        get
        {
            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add("(GMT -10:00) Hawaii", "-10");
            d.Add("(GMT -9:00) Alaska", "-9");
            d.Add("(GMT -8:00) Pacific Time", "-8");
            d.Add("(GMT -7:00) Mountain Time", "-7");
            d.Add("(GMT -6:00) Central Time", "-6");
            d.Add("(GMT -5:00) Eastern Time", "-5");
            d.Add("Unknown", "0");
            return d;
        }
    }

    [Display(Name = "Phone")]
    [Phone(ErrorMessage = "Invalid phone number.")]
    [StringLength(10, MinimumLength = 10, ErrorMessage = "Phone number must be 10 characters long.")]
    public string Phone { get; set; }
    #endregion
}
解决方案 我必须将电子邮件作为字段添加到表单中,或者删除必需的属性。一旦我做了其中任何一个,代码就按预期工作了


希望对您有所帮助。

如果您使用实体框架:

错误消息(来自PMC中的更新数据库命令): 一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性

解决方案: 此问题的一个原因是Seed方法运行时的验证错误。有关调试种子方法的提示,请参阅种子设定和调试实体框架(EF)DBs

有关更多信息,请访问:


希望这有帮助…

我认为您在创建ApplicationUser实例时传递的是空值。 在我的例子中,我设置了ViewModel中不需要的邮政编码,但在IdentityModel中仍然需要邮政编码。
因此,您应该在IdentityModel中删除所需的邮政编码注释。并将迁移添加到更新数据库。

您应该将您的解决方案作为答案发布,然后接受您自己的答案,因为它确实不需要。谢谢!我在下面添加了它。
        //
    // POST: /Account/Register
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Register(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = new BankUser() { UserName = model.UserName };
            var result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            {
                await SignInAsync(user, isPersistent: false);
                return RedirectToAction("Index", "Home");
            }
            else
            {
                AddErrors(result);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }