Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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
与NHibernate不一致的SQLDateTime溢出_Nhibernate_Overflow_Sqldatetime - Fatal编程技术网

与NHibernate不一致的SQLDateTime溢出

与NHibernate不一致的SQLDateTime溢出,nhibernate,overflow,sqldatetime,Nhibernate,Overflow,Sqldatetime,我们有一个非常奇怪的错误,当我们想从WCF服务中保存一些东西时,有时会出现这个错误。我们正在保存的对象不包含无效的日期时间,我们在保存之前都会检查它们。当我们看到这个错误时,数据库有时会挂起,WCF处于错误状态。当我重新启动数据库和承载WCF的IIS web应用程序并再次尝试保存时。它起作用了。。 我们是无知的,所以如果有人有一些建议,请分享 错误如下: 2010-03-05 10:21:34311[5]错误ProjectX.Business.tExceptionLogger-ReceiveRe

我们有一个非常奇怪的错误,当我们想从WCF服务中保存一些东西时,有时会出现这个错误。我们正在保存的对象不包含无效的日期时间,我们在保存之前都会检查它们。当我们看到这个错误时,数据库有时会挂起,WCF处于错误状态。当我重新启动数据库和承载WCF的IIS web应用程序并再次尝试保存时。它起作用了。。 我们是无知的,所以如果有人有一些建议,请分享

错误如下:

2010-03-05 10:21:34311[5]错误ProjectX.Business.tExceptionLogger-ReceiveResultsForMobile()中的某个位置出现异常:{0} Castle.Services.Transaction.CommitResourceException:无法提交事务,一个(或多个)资源失败-->System.Data.SqlTypes.SqlTypeException:SqlDateTime溢出。必须在1753年1月1日12:00:00 AM和9999年12月31日11:59:59 PM之间。 位于System.Data.SqlTypes.SqlDateTime.FromTimeSpan(TimeSpan值) 位于System.Data.SqlTypes.SqlDateTime.FromDateTime(日期时间值) 位于System.Data.SqlClient.MetaType.FromDateTime(DateTime DateTime,字节cb) 在System.Data.SqlClient.TdsParser.WriteValue(对象值、元类型、字节比例、Int32实际长度、Int32编码字节大小、Int32偏移量、TdsParserStateObject stateObj) 在System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[]rpcArray,Int32 timeout,Boolean inSchema,SqlNotificationRequest notificationRequest,TdsParserStateObject stateObj,Boolean isCommandProc) 位于System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、Boolean async) 位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法、DbAsyncResult) 位于System.Data.SqlClient.SqlCommand.InternalExecuteOnQuery(DbAsyncResult结果、字符串方法名、布尔sendToPipe) 位于System.Data.SqlClient.SqlCommand.ExecuteOnQuery()处 在NHibernate.AdoNet.AbstractBatcher.ExecuteOnQuery(IDbCommand cmd)中 在NHibernate.AdoNet.NonBatchingBatcher.AddToBatch(预期期望值) 在NHibernate.Persister.Entity.AbstractEntityPersister.Update(对象id、对象[]字段、对象[]旧字段、对象rowId、布尔[]includeProperty、Int32 j、对象旧版本、对象obj、SqlCommandInfo sql、ISessionImplementor会话) 在NHibernate.Persister.Entity.AbstractEntityPersister.UpdateOrInsert(对象id、对象[]字段、对象[]旧字段、对象rowId、布尔[]includeProperty、Int32 j、对象旧版本、对象obj、SqlCommandInfo sql、ISessionImplementor会话) 在NHibernate.Persister.Entity.AbstractEntityPersister.Update(对象id、对象[]字段、Int32[]目录字段、布尔hasDirtyCollection、对象[]旧字段、对象旧版本、对象obj、对象rowId、ISessionImplementor会话) 在NHibernate.Action.EntityUpdateAction.Execute()处 在NHibernate.Engine.ActionQueue.Execute(IExecutable可执行文件)处 在NHibernate.Engine.ActionQueue.ExecuteActions(IList列表)中 在NHibernate.Engine.ActionQueue.ExecuteActions()处 位于NHibernate.Event.Default.AbstractFlushingEventListener.PerformExecutions(IEventSource会话) 在NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent事件) 在NHibernate.Impl.SessionImpl.Flush()处 在NHibernate.Transaction.AdoTransaction.Commit()处 在Rhino.Commons.NHibernateTransactionAdapter.Commit()中 在Rhino.Commons.Facilities.RhinoTransactionResourceAdapter.Commit()中 在Castle.Services.Transaction.AbstractTransaction.Commit()中 ---内部异常堆栈跟踪的结束--- 在Castle.Services.Transaction.AbstractTransaction.Commit()中 在Castle.Services.Transaction.StandardTransaction.Commit()中 at Castle.facility.AutomaticTransactionManagement.TransactionInterceptor.Intercept(IInvocation调用) 在Castle.DynamicProxy.AbstractInvocation.procedure()中 在iReceiveServiceProxy 61C28A82C9A24E96957E32292B924889.Save(接收实例) 在D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs中的WcfInterfaceService.MobileServices.SaveReceiveLines(IEnumerable
1 receiveLines,String warehouseCode,String用户名,String deviceNumber,Boolean removeOldReceiveLines)中
在D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs中的WcfInterfaceService.MobileServices.ProcessReceiveResults(列表
1接收行、字符串仓库代码、字符串用户名、字符串设备编号)中
在D:\Project Docs\Clients\ClientX 09.08\Projects\ProjectX\ProjectX\ProjectX.WcfInterfaceService\MobileServices.svc.cs中的WcfInterfaceService.MobileServices.processresultsfromobile(字符串receiveResult,字符串warehouseCode,字符串用户名,字符串deviceNumber)中:第668行是否运行SQL Server 2008?我今天在使用SQLServer2008时遇到了同样的错误。在数据库中,我将列设置为“date”,而不是“datetime”,因为我不关心时间部分。但是.NET中没有“日期”数据类型,所以您使用datetime

对我来说,我传递的是空datetime值,默认值为1/1/0001 12:00:00 AM。所以我得到了和你们看到的一样的错误,因为它包含了时间部分

对我来说,我必须使我的datetime值为空,并且我还必须使用NHibernate中支持日期数据类型的MSSQL2008dial。更多信息


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

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

  • 你使用什么样的数据库
  • 什么样的日期导致了异常
  • 猜测:您使用的数据库的日期时间范围或准确性比您在代码中使用的要小。在这种情况下,异常不是由NHibernate引起的,而是由featu引起的