我的添加/删除功能都能正常工作。但是,当我编辑时,我从实体获得验证错误消息。
错误是:{"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传递给所需的列。
这是因为我在“添加”步骤中预填充这些,因此“编辑”步骤在模型中没有它们。我添加了隐藏字段以容纳预填充列,现在可以正常工作。
答案 0 :(得分:1)
为了帮助您找到问题,您可以将db.SaveChanges()包装到try catch中并在catch行上放置断点。这将允许您导航到异常并查看EntryType和ValidationErrors。
try {
db.SaveChanges();
}
catch(DbEntityValidationException e) {
throw;
}
这就是我修复EntityValidation问题的方法。大多数情况下,此错误是由模型中存在的字段验证引起的。