sql-server – Nhibernate:如何为SqlDateTime溢出异常找到负责
发布时间:2020-12-12 07:08:19 所属栏目:MsSql教程 来源:网络整理
导读:我知道异常的原因(SqlDateTime溢出.必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间.)是实体中不可为空的DateTime字段,所以Nhibernate希望保存比MSSQL接受的更小的DateTime值. 问题是项目中有很多实体要找到正确的DateTime字段. 该异常发生在SaveOrU
我知道异常的原因(SqlDateTime溢出.必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间.)是实体中不可为空的DateTime字段,所以Nhibernate希望保存比MSSQL接受的更小的DateTime值.
问题是项目中有很多实体要找到正确的DateTime字段. 该异常发生在SaveOrUpdate()之后,但不是由我想要保存的实体触发,而是在当前会话中加载的任何其他实体现在受flush()的影响. 我怎样才能找出哪个字段真正应对异常负责? 解决方法如果将异常强制转换为SqlTypeException,则会公开Data集合.通常,集合中只有一个Key和一个Value.该值是尝试执行的SQL.通过检查DML,您可以看到正在对哪个表进行操作.希望该表足够窄,以确定违规列是微不足道的.这是我用来吐出异常的Key和Value的一些简单代码. catch (SqlTypeException e) { foreach(var key in e.Data.Keys) { System.Console.Write("Key is " + key.ToString()); } foreach(var value in e.Data.Values) { Console.WriteLine("Value is "+value.ToString()); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容