C# 在没有日期的页面上将表达式转换为数据类型datetime时出现算术溢出错误
我不确定这个错误是怎么发生的,因为当我保存信息时,它会出现在一个页面上,而这个页面上没有任何要保存的日期或时间信息。我不知道这是什么原因。页面只显示选择下拉框,没有日期或时间。对此问题的任何见解都将不胜感激 这是总体错误消息: System.Data.SqlClient.SqlException(0x80131904):将表达式转换为数据类型datetime时发生算术溢出错误。 声明已终止。 在C:\code\Kids\Kids.Domain\Entities\KidsDataContext.HandleSqlException(SqlException SqlException)中的Kids.Domain.Entities.KidsDataContext.HandleSqlException(SqlException SqlException)中:第86行 在C:\code\Kids\Kids.Domain\Entities\KidsDataContext.cs中的Kids.Domain.Entities.KidsDataContext.SubmitChanges(ConflictMode failureMode)中:第78行 在C:\code\Kids\Kids.Domain\Repository\Concrete\CasePartyRepository.Save(CaseParty CaseParty)中的Kids.Domain.Repository.Concrete.CasePartyRepository.cs:第67行 在C:\code\Kids\Kids.MVC\Controllers\PartyRelationshipController.cs中的Kids.MVC.Controllers.PartyRelationshipController.SelectPartyType(PartyTypeRelationsFormViewModel视图模型,Guid[]selectedParties)中选择PartyType(PartyTypeRelationsFormViewModel视图模型,Guid[]selectedParties) 在lambda_方法中(闭包、控制器基、对象[]) 位于System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext ControllerContext,IDictionary`2参数) 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass44.b_43()中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass39.c_DisplayClass3b.b_35()中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass51.b_4b()中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass51.b_4b()中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass51.b_4b()中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass39.b_38(IAsyncResult asyncResult) 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass27.c_DisplayClass2c.b_22()中 在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_DisplayClass27.b_24(IAsyncResult asyncResult) KidsDataContextPartial代码:C# 在没有日期的页面上将表达式转换为数据类型datetime时出现算术溢出错误,c#,asp.net-mvc,C#,Asp.net Mvc,我不确定这个错误是怎么发生的,因为当我保存信息时,它会出现在一个页面上,而这个页面上没有任何要保存的日期或时间信息。我不知道这是什么原因。页面只显示选择下拉框,没有日期或时间。对此问题的任何见解都将不胜感激 这是总体错误消息: System.Data.SqlClient.SqlException(0x80131904):将表达式转换为数据类型datetime时发生算术溢出错误。 声明已终止。 在C:\code\Kids\Kids.Domain\Entities\KidsDataContext.H
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" %>
不同的文化可以产生不同的结果。。。
可能服务器区域性与您的区域性不同如果您的表架构中有任何类型的datetime字段(可能作为时间戳),默认情况下EF不够聪明,无法遵守SQL默认值(如
getdate()
),因此您需要在添加实体时自行设置该字段。否则,EF会尝试将该值设置为默认值DateTime
(似乎是01/01/0001
),这会导致日期对DateTime
MSSQL类型无效(尽管将字段更改为datetime2
应该有效)。如果可以发布该代码,我们可以帮助您调试。@JW我不确定要发布什么-当我在localhost上运行代码时,它没有此错误-此错误仅在部署到服务器时出现,这让我感到困惑。我可以发布堆栈。我们可以看到KidsDataContextPartial
的第86行吗?@SimonWhitehead我继续添加了代码供您查看。看起来您正在从第86行重新引用一个新的异常。。你抛出的异常是什么?