c# - 如何处理System.Data.Entity.Validation.DbEntityValidationException?

标签 c# asp.net-mvc entity-framework asp.net-mvc-4

<分区>

我的应用出现以下错误:

An exception of type 'System.Data.Entity.Validation.DbEntityValidationException' occurred in EntityFramework.dll but was not handled in user code

Additional information: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

我在尝试注册新用户时遇到此错误。 “db.SaveChanges()”发生错误

代码如下:

public ActionResult Registration(x.Models.User user)
{
    if(ModelState.IsValid)
    {
        using(var db = new xDBEntities1())
        {
            var crypto = new SimpleCrypto.PBKDF2();
            var encrpPass = crypto.Compute(user.password);
            var sysUser = db.users.Create();
                    
            sysUser.email = user.email;
            sysUser.username = user.username;
            sysUser.password = encrpPass;
            sysUser.premium_credits = 0;
            sysUser.login_times = 0;
            sysUser.last_ip = Request.ServerVariables["REMOTE_ADDR"];
            sysUser.creation_ip = Request.ServerVariables["REMOTE_ADDR"];
            sysUser.banned = 0;
            sysUser.creation_date = DateTime.Now;
            sysUser.creation_time = DateTime.Now.TimeOfDay;

            db.users.Add(sysUser);
            db.SaveChanges();
        }
    }
    return RedirectToAction("Index", "Home");
}

编辑: 用户模型类

public class User
{
    [Required]
    [StringLength(50)]
    [Display(Name="Username: ")]
    public String username { get; set; }
    [Required]
    [DataType(DataType.Password)]
    [StringLength(50,MinimumLength=6)]
    [Display(Name="Password: ")]
    public string password { get; set; }
    [Required]
    [EmailAddress]
    [StringLength(50)]
    public string email { get; set; }
    public int phonenumber { get; set; }
    public int mobilephonenumber { get; set; }

    }
}

我该如何处理?

最佳答案

要解决这个错误,我们可以将 DatabaseContext 对象的 SaveChanges() 方法包装在 try block 和 Catch 中 遍历每个错误以找出错误所在。代码如下。

try
{
    db.SaveChanges();
}
catch (DbEntityValidationException ex)
{
    foreach (var entityValidationErrors in ex.EntityValidationErrors)
    {
        foreach (var validationError in entityValidationErrors.ValidationErrors)
        {
            Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
        }
    }
}

一旦发现错误,您就可以着手修复它。 希望这会有所帮助。

关于c# - 如何处理System.Data.Entity.Validation.DbEntityValidationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21606454/

相关文章:

c# - EF核心: Fetching A List of Entities with Their Children

c# - 在 WCF 服务内部的集线器中连接 SignalR

c# - Entity Framework 在一对一(可选/必需)关系中生成第二个左连接

entity-framework - 使用 Entity Framework 4.0 创建 POCO

c# - C# 中串行端口的多端口异步 I/O

c# - 如何创建类字典,以便我可以使用键来确定要初始化哪个新类?

c# - 无需备份权限即可远程备份 SQL Server 数据库

asp.net - ASP.NET MVC 条件输出的最佳实践?

c# - asp.net mvc 2 - 模型绑定(bind)和选择列表

c# - EF6 'ModelConfiguration' 已设置但未发现