0

我不确定这个错误是如何发生的——因为当我保存不包含任何要保存的日期或时间信息的信息时,它会出现在页面中。我不是造成这种情况的原因。该页面仅显示没有日期或时间的选择下拉框。对此问题的任何见解将不胜感激。

这是总体错误消息:

System.Data.SqlClient.SqlException (0x80131904):将表达式转换为数据类型 datetime 时出现算术溢出错误。该语句已终止。在 Kids.Domain.Entities.KidsDataContext.HandleSqlException(SqlException sqlException) 在 C:\code\kids\Kids.Domain\Entities\KidsDataContextPartial.cs:第 86 行在 Kids.Domain.Entities.KidsDataContext.SubmitChanges(ConflictMode failureMode) 在 C :\code\kids\Kids.Domain\Entities\KidsDataContextPartial.cs:第 78 行 Kids.Domain.Repository.Concrete.CasePartyRepository.Save(CaseParty caseParty) 在 C:\code\kids\Kids.Domain\Repository\Concrete\ CasePartyRepository.cs:C:\code\kids\Kids.MVC\Controllers\PartyRelationshipController.cs 中 Kids.MVC.Controllers.PartyRelationshipController.SelectPartyType(PartyTypeRelationshipFormViewModel viewModel, Guid[] selectedParties) 的第 67 行: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);
4

2 回答 2

0

如果您的表架构中有任何类型的日期时间字段(可能作为时间戳),则默认情况下 EF 不够聪明,无法尊重 SQL 默认值(如getdate()),因此您需要在添加实体时自行设置。否则,EF 会尝试将该值设置为DateTime(似乎是01/01/0001)的默认值,这会导致日期对 MSSQL 类型无效datetime(尽管将字段更改为datetime2应该可以工作)。

于 2013-01-23T02:40:28.383 回答
0

尝试将文化添加到您的页面:

<%@ Page Language="VB" Title="..." Culture="en-US" %>

不同的文化可以做不同的结果......也许服务器文化与你的文化不同

于 2013-01-23T02:33:55.333 回答