ASP.NET MVC:EntityValidationErrors

时间:2017-03-05 01:40:22

标签: asp.net-mvc entity-framework

每次尝试创建新用户或注册时都会出错。 这是来源: 一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.Entity.Validation.DbEntityValidationException:一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。

来源错误:

第185行: 第186行: 第187行:var result = await UserManager.CreateAsync(user,model.Password); 第188行:if(result.Succeeded) 第189行:{

源文件:C:\ Users \ koand \ documents \ visual studio 2015 \ Projects \ MvcStore \ MvcStore \ Controllers \ AccountController.cs Line:187

我的代码:   public async Task Register(RegisterViewModel model,string returnUrl)         {

        if (ModelState.IsValid)
        {
            var user = new ApplicationUser
            {
                UserName = model.Email,
                Email = model.Email
             };



            var result = await UserManager.CreateAsync(user, model.Password);
            if (result.Succeeded)
            {
                await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

                // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                // Send an email with this link
                // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                return RedirectToAction("Index", "Home");
            }
            AddErrors(result);
        }

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

5 个答案:

答案 0 :(得分:0)

以下是此类异常的原因

  1. 您的模型与数据库架构不同

  2. DataType或约束不正确

  3. 标识列集也会导致此类错误

  4. 如果您使用代码优先,请确保运行迁移,如果您使用DB优先方法,请更新EDMX。

答案 1 :(得分:0)

我在ASP.NET MVC上遇到了同样的问题,我在查看代码下使用以下代码解决了该问题:

@section Scripts {
    @Scripts.Render("/bundles/jqueryval")
}

答案 2 :(得分:0)

通常,当保存到数据库的数据值违反字段验证时,例如,值的长度超过了字段允许的长度,例如将“ longtext”保存到只能接受3个字符的字段时,就会发生这种情况。

答案 3 :(得分:0)

当您的实体验证不正确时,会发生此错误。

您可以使用:

if(ModelState.isvalid){}

出于更多注意。

答案 4 :(得分:0)

您可以在dbcontext构造函数中使用此行来忽略实体验证。

base.Configuration.ValidateOnSaveEnabled = false;