解决scheme“validation失败的一个或多个实体。 有关更多详细信息,请参阅“EntityValidationErrors”属性。

我遇到了这个错误,它没有提供什么根本原因的详细信息,但我找出了问题所在。 我想分享它,让其他遇到问题的人可能会成功解决问题。

我有以下课程:

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 } 

正如你所看到的,我扩展了IdentityUser的附加属性。 当我尝试创build一个新用户UserManager.CreateAsync()时,我的视图只有UserName和Password作为表单字段。 当试图用UserName和Password提交表单时,系统将尝试validation该电子邮件是否因为具有Required属性而被传递。

  // // 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); } 

解决scheme我必须在我的表单中添加电子邮件作为字段或删除必需的属性。 一旦我做了他们其中的任何一个代码按预期工作。

希望有所帮助。

如果你使用entity framework:

错误消息(来自PMC中的Update-Database命令): 对一个或多个实体的validation失败。 有关更多详细信息,请参阅“EntityValidationErrors”属性。

解决scheme: 这个问题的一个原因是Seed方法运行时的validation错误。 有关debuggingSeed方法的提示,请参阅“种子和debuggingentity framework(EF)DB”。

有关更多信息,请访问: MVC 5 Web应用程序的高级entity framework6scheme(12/12)

希望这可以帮助…

我想你创buildApplicationUser实例时传递空值。 在我的情况下,我设置Postcode不是在ViewModel需要,但在IdentityModel邮政编码的仍然是必需的。 所以,你应该删除IdentityModel中PostCode的Required注解。 并添加迁移到更新数据库。