更新 EF 模型会引发“将表达式转换为数据类型 datetime 的算术溢出错误”

本文关键字:datetime 数据类型 错误 溢出 转换 模型 EF 表达式 更新 | 更新日期: 2023-09-27 18:31:48

>我创建了一个没有问题的新记录,但是每当我更新模型时,即使日期没有更改,我也会收到"将表达式转换为数据类型日期时间的算术溢出错误"错误。

我已确认要更新的现有数据库记录中的日期有效。

即使没有更新日期字段,下面的代码片段也会失败。

var dbModule = db.Modules.FirstOrDefault(v => v.ModuleId == module.ModuleId);
dbModule.Name = module.Name;
//dbModule.Password = module.Password;
//dbModule.Colour = module.Colour;
//dbModule.Modified = module.Modified;
db.SaveChanges();

如果我查看跟踪,我会看到以下命令,因此可以确定没有更新日期字段。

ADO.NET:Execute NonQuery "update [dbo].[Modules]
set [Name] = @0
where ([ModuleId] = @1)"

为清楚起见,操作环境为:

  • ASP.NET MVC 3
  • .NET 4.5
  • SQL Server 2012 (Express)
  • 通过数据库首先方法生成的模型,具有相应的edmx。
  • 日期时间模型字段在 SQL Server 中的类型为日期时间

我尝试使用SQL Server Profiler,但它没有输出更新语句来查看确切的SQL,因此我依赖于上面提供的智能跟踪。

任何帮助将不胜感激。

更新 EF 模型会引发“将表达式转换为数据类型 datetime 的算术溢出错误”

啊啊! 日复一日。

使用 SQL Server Profiler,我发现我必须同时记录两者

  • RPC:已完成
  • SQL:批处理已完成

这显示了所有的 SQL 语句,这允许我跟踪它,因为我在数据库上触发了一个触发器,设置了修改字段,并使用了格式不正确的字符串日期。

BlinkyBill,检查实体/数据库上的日期时间字段是否可为空,以及是否使用了正确的映射。此外,您可以尝试在更新方法上明确设置此字段。希望对您有所帮助!