算术溢出错误,将表达式转换为没有日期的页面上的数据类型日期时间

本文关键字:日期 时间 数据类型 错误 溢出 转换 表达式 | 更新日期: 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 应该有效)。