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

上一篇: nhibernate how to find bad field in complex update

下一篇: SqlDateTime overflow Exception in Select command