算术溢出错误,将表达式转换为没有日期的页面上的数据类型日期时间
本文关键字:日期 时间 数据类型 错误 溢出 转换 表达式 | 更新日期: 2023-09-27 17:55:25
我不确定这个错误是如何发生的 - 因为当我保存不包含任何要保存的日期或时间信息的信息时,它出现在页面中。我不是造成这种情况的原因。该页面仅显示没有日期或时间的选择下拉框。对这个问题的任何见解将不胜感激。
这是整体错误消息:
System.Data.SqlClient.SqlException (0x80131904):将表达式转换为数据类型 datetime 的算术溢出错误。 该语句已终止。 at Kids.Domain.Entities.KidsDataContext.HandleSqlException(SqlException sqlException) in C:''code''kids''Kids.Domain''Entities''KidsDataContextPartial.cs:line 86 at Kids.Domain.Entities.KidsDataContext.SubmitChanges(ConflictMode failureMode) in C:''code''kids''Kids.Domain''Entities''KidsDataContextPartial.cs:line 78 at Kids.Domain.Repository.Concrete.CasePartyRepository.Save(CaseParty caseParty) in C:''code''kids''Kids.Domain''Repository''Concrete''CasePartyRepository.cs:line 67 at Kids.MVC.Controllers.PartyRelationship Controller.SelectPartyType(PartyTypeRelationshipFormViewModel viewModel, Guid[] selectedParty) in C:''code''kids''Kids.MVC''Controllers''PartyRelationship Controller.cs:line 116 at lambda_method(闭包、控制器库、对象[] ) at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary'2 parameters) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass44.b_43() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass39.<>c_DisplayClass3b.b_35() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass51.b_4b() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass51.b_4b() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass51.b_4b() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass39.b_38(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass27.<>c_DisplayClass2c.b_22() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_DisplayClass27.b_24(IAsyncResult asyncResult)
KidsDataContext部分代码:
private void HandleSqlException(SqlException sqlException)
{
if (sqlException.Message.StartsWith("The DELETE statement conflicted"))
{
throw new DeleteReferencedException("Can not delete referenced items", sqlException);
}
if (sqlException.Number == 2601 || sqlException.Number == 2627 )
{
throw new DuplicateItemException("Item already exists.", sqlException);
}
throw sqlException;
}
第 86 行:
throw new DeleteReferencedException("Can not delete referenced items", sqlException);
尝试将区域性添加到您的页面:
<%@ Page Language="VB" Title="..." Culture="en-US" %>
不同的文化可以产生不同的结果...也许服务器区域性与您的区域性不同
如果表架构中有任何类型的日期时间字段(可能作为时间戳),则默认情况下 EF 不够智能,无法遵循 SQL 默认值(如 getdate()
),因此您需要在添加实体时自行设置。否则,EF 会尝试将该值设置为 DateTime
的默认值(似乎01/01/0001
),这会导致日期对于datetime
MSSQL 类型无效(尽管将字段更改为 datetime2
应该有效)。