0

我将一个复杂的对象树保存回我的 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);
    }

注意:我正在使用 fluent nhibernate 进行配置

4

2 回答 2

1

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

于 2013-04-02T14:33:59.657 回答
0

我不能为 SQL Server 说话,但使用 SQLite,经常显示违规字段的名称,但深埋在异常消息或内部异常中,很容易错过。

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

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

Debug.Print( ex.ToString() )

当您可以一次看到所有内容时,您可能会在中间某个地方找到您需要的东西。

于 2013-04-04T15:23:43.547 回答