nhibernate如何在复杂更新中找到不良域
我正在将一个复杂的对象树保存回我的sql服务器数据库。 对象树上的一个字段必须是null
或有趣的日期,因为我得到这个错误信息。
“SqlDateTime溢出,必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。”
我可以通过使用视觉工作室检查员找到它并深入研究,直到找到狡猾的领域,但这非常耗时。 它也不会导致自己产生很大的日志记录错误信息。
是他们的一种方式,我可以得到nhibernate返回错误消息的有问题的字段名称?
我没有做任何事情,
public TEntity Save(TEntity entity)
{
return Save(entity, false);
}
注意:我使用流利的nhibernate进行配置
NHibernate不会告诉你哪个字段导致了这种情况,但是很容易缩小范围:99%的确定性,它是一个不可初始化的不可空的 DateTime
字段,所以它的默认值为1/1/1( IIRC),这显然超出了范围。
我不能说SQL Server,但对于SQLite,通常会显示违规字段的名称,但深埋在异常消息或内部异常中非常容易漏掉。
简单地调用异常的ToString()方法可能很有价值,该方法将创建一个包含所有消息文本(包括所有内部异常)的单个字符串,并将其显示在消息框中。
或者,在即时窗口中键入以下内容,例如
Debug.Print( ex.ToString() )
当你可以一次看到它时,你可能会发现你需要埋在中间的某处。
链接地址: http://www.djcxy.com/p/26967.html