使用 Entity Framework 保存到 SQL Server 时出现验证失败异常
Entity Framework 是一个强大的 ORM(对象关系映射)框架,它支持开发人员使用 C# 等面向对象的编程语言来处理关系数据库。但是,使用实体框架时可能出现的一个常见问题是将更改保存到数据库时出现“一个或多个实体验证失败”异常。
异常原因
错误消息通常表示保存到数据库的数据违反了数据库约束。在这种特定情况下,问题可能源于数据库和实体类中用于日期和时间值的不同数据类型。
解决方案:转换为适当的数据类型
要解决此问题,需要在保存更改之前转换实体类中的数据类型以匹配数据库数据类型。在这种情况下,Event 类中的 DateTime 和 TimeSpan 数据类型应先转换为 Date 和 Time 数据类型,然后再保存到数据库。
以下是在代码中执行此操作的方法:
// Convert EventDate to Date datatype Event event = this.storeDB.Events.Find(id); event.EventDate = event.EventDate.Date; // Convert StartTime and EndTime to Time datatype event.StartTime = new TimeSpan(event.StartTime.Hours, event.StartTime.Minutes, 0); event.EndTime = new TimeSpan(event.EndTime.Hours, event.EndTime.Minutes, 0); // Save changes to the database this.storeDB.SaveChanges(); RedirectToAction("Index");
通过将数据类型转换为正确的格式,保存到数据库的数据现在将符合数据库约束,解决“验证失败”的问题
附加说明:
如果继续遇到数据保存问题,可以使用 DbEntityValidationException 的 EntityValidationErrors 属性提取有关验证错误的更多信息,如下所示在提供的答案中。
以上是为什么使用实体框架将数据保存到 SQL Server 时出现'验证失败”异常?的详细内容。更多信息请关注PHP中文网其他相关文章!