2

我们有一个非常奇怪的错误,当我们想从 WCF 服务中保存某些内容时,有时会收到此错误。我们保存的对象不包含无效的日期时间,我们在保存之前都会检查它们。当我们看到这个错误时,数据库有时会挂起并且 WCF 处于错误状态。当我重新启动托管 WCF 的数据库和 IIS Web 应用程序并尝试再次保存时。它有效..我们一无所知,所以如果有人有任何建议,请分享

以下是错误:

2010-03-05 10:21:34,311 [5] 错误 ProjectX.Business.TTExceptionLogger - ReceiveResultsForMobile() 中的某处异常:{0} Castle.Services.Transaction.CommitResourceException:无法提交事务,其中一个(或多个)资源失败---> System.Data.SqlTypes.SqlTypeException:SqlDateTime 溢出。必须介于 1753 年 1 月 1 日上午 12:00:00 和 9999 年 12 月 31 日晚上 11:59:59 之间。在 System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan value) 在 System.Data.SqlTypes.SqlDateTime.FromDateTime(DateTime 值) 在 System.Data.SqlClient.MetaType.FromDateTime(DateTime dateTime, Byte cb) 在 System.Data。 System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout,1 receiveLines, String warehouseCode, String username, String deviceNumber, Boolean removeOldReceiveLines) in D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 567 at WcfInterfaceService.MobileServices.ProcessReceiveResults(List1 在 D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 770 中的 receiveLines, String warehouseCode, String username, String deviceNumber):WcfInterfaceService.MobileServices.ProcessResultsFromMobile(String receiveResult, D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs:line 668 中的 String warehouseCode、String username、String deviceNumber)

4

2 回答 2

4

您正在运行 SQL Server 2008 吗?我今天在使用 SQL Server 2008 时遇到了同样的错误。在数据库上,我将列设置为“日期”而不是“日期时间”,因为我不关心时间部分。但是 .NET 中没有“日期”数据类型,因此您使用日期时间。

对我来说,我传递的是空日期时间值,默认为 1/1/0001 12:00:00 AM。因此,我遇到了与您看到的相同的错误,因为它包含时间部分。

对我来说,我必须使我的日期时间值可以为空,并且我还必须在 NHibernate 中使用支持日期数据类型的 MsSql2008Dialect。有关NHibernate 和 SQL Server 2008 的更多信息,请点击此处。

如果您使用的是 SQL Server 2008,我会检查以确保您的数据库数据类型设置正确并且您使用的是 MsSql2008Dialect。

于 2010-03-05T19:59:08.963 回答
1

在给你答案之前,我有两个问题:

  1. 你使用什么样的数据库?
  2. 什么样的日期导致异常?

猜测:您使用的数据库的日期时间范围或准确性比您在代码中使用的要小。在这种情况下,异常不是由 NHibernate 引起的,而是由数据库的一个特性引起的。这不是一个错误,而是一个功能。

于 2010-03-05T20:35:03.170 回答