Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在没有日期的页面上将表达式转换为数据类型datetime时出现算术溢出错误_C#_Asp.net Mvc - Fatal编程技术网

C# 在没有日期的页面上将表达式转换为数据类型datetime时出现算术溢出错误

C# 在没有日期的页面上将表达式转换为数据类型datetime时出现算术溢出错误,c#,asp.net-mvc,C#,Asp.net Mvc,我不确定这个错误是怎么发生的,因为当我保存信息时,它会出现在一个页面上,而这个页面上没有任何要保存的日期或时间信息。我不知道这是什么原因。页面只显示选择下拉框,没有日期或时间。对此问题的任何见解都将不胜感激 这是总体错误消息: System.Data.SqlClient.SqlException(0x80131904):将表达式转换为数据类型datetime时发生算术溢出错误。 声明已终止。 在C:\code\Kids\Kids.Domain\Entities\KidsDataContext.H

我不确定这个错误是怎么发生的,因为当我保存信息时,它会出现在一个页面上,而这个页面上没有任何要保存的日期或时间信息。我不知道这是什么原因。页面只显示选择下拉框,没有日期或时间。对此问题的任何见解都将不胜感激

这是总体错误消息:

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代码:

 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行重新引用一个新的
异常。。你抛出的异常是什么?