尝试进行更改并保存时EntityValidationError

时间:2015-04-23 15:54:30

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

我的添加/删除功能都能正常工作。但是,当我编辑时,我从实体获得验证错误消息。

错误是:{"Validation failed for one or more entities. See 'EntityValidationErrors' property for more details."}

在查看EntityValidationErrors时,它仅指出:{System.Data.Entity.Validation.DbEntityValidationResult}

我将模型从我的编辑页面传递给Post / Edit方法存根。

   [HttpPost]
   public ActionResult Edit(EmployeeRoadsideAssistance employee)
   {
       AlphaDBEntities db = new AlphaDBEntities();

       db.Entry(employee).State = EntityState.Modified;
       db.SaveChanges();

       return RedirectToAction("Edit", new { id = employee.id });
   }

保存更改失败。如果我不对实际模型进行任何更改,问题也会退出。因此,如果我添加新人,然后单击编辑,然后单击编辑而不进行任何更改我仍然会收到错误。

修改

感谢DavidG的精彩评论,我能够看到真正的错误,表明我试图将null传递给所需的列。

这是因为我在“添加”步骤中预填充这些,因此“编辑”步骤在模型中没有它们。我添加了隐藏字段以容纳预填充列,现在可以正常工作。

1 个答案:

答案 0 :(得分:1)

为了帮助您找到问题,您可以将db.SaveChanges()包装到try catch中并在catch行上放置断点。这将允许您导航到异常并查看EntryType和ValidationErrors。

try {    
    db.SaveChanges();
}
catch(DbEntityValidationException e) {
    throw;
}

这就是我修复EntityValidation问题的方法。大多数情况下,此错误是由模型中存在的字段验证引起的。