nhibernate如何在复杂的更新中找到坏字段

时间:2013-04-02 13:12:42

标签: c# nhibernate fluent-nhibernate

我正在将一个复杂的对象树保存回我的sql server数据库。 对象树上的一个字段必须是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来配置

2 个答案:

答案 0 :(得分:1)

NHibernate不会告诉你哪个字段会导致这种情况,但很容易缩小范围:99%的确定性,它是一个不可空的 DateTime字段,你还没有初始化,它的默认值为1/1/1(IIRC),显然超出范围。

答案 1 :(得分:0)

我不能代表SQL Server,但是对于SQLite,通常会显示违规字段的名称,但是在异常消息或内部异常中深深埋没,很容易错过。

简单地调用异常的ToString()方法可能很有价值,该方法将创建包含所有消息文本的单个字符串,包括所有内部异常,并在消息框中显示它。

或者,在立即窗口中键入以下内容,例如

Debug.Print( ex.ToString() )

当你能够立刻看到它时,你可能会发现你需要埋在中间的某个地方。