如何在复杂的更新中找到坏字段
本文关键字:字段 更新 复杂 | 更新日期: 2023-09-27 18:07:14
我正在保存一个复杂的对象树回我的sql server数据库。对象树上的一个字段必须是null
或一个有趣的日期,因为我得到这个错误消息。
" SqlDateTime溢出。必须在1753年1月1日12:00:00 AM和12/31/9999 11:59:59 pm。"
我可以通过使用visual studio检查器找到它,并向下钻直到我找到危险的领域,但这是非常耗时的。而且它也不会导致自己出现严重的日志错误消息。
是他们的一种方式,我可以让nhibernate返回违规字段名称与错误消息?
我没有做任何花哨的事,
public TEntity Save(TEntity entity)
{
return Save(entity, false);
}
注意:我正在使用fluent nhibernate来配置
NHibernate不会告诉你是哪个字段导致的,但是很容易缩小范围:99%的确定性,这是一个非空 DateTime
字段,你还没有初始化,所以它的默认值是1/1/1 (IIRC),这显然在范围之外。
我不能为SQL Server说话,但在SQLite中,违规字段的名称经常显示,但深埋在异常消息或内部异常中,因此很容易错过。
简单地调用异常的ToString()方法可能是有价值的,该方法将创建一个包含所有消息文本(包括所有内部异常)的字符串,并将其显示在消息框中。
或者,在"立即窗口"中输入以下内容,例如
Debug.Print( ex.ToString() )
当你能一次看到所有内容时,你可能会发现你需要的内容隐藏在中间的某个地方。