Nhibernate:如何为SqlDateTime溢出异常找到负责的字段

Tar*_*dis 7 sql-server mapping nhibernate entity exception

我知道异常的原因(SqlDateTime溢出.必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间.)是实体中不可为空的DateTime字段,所以Nhibernate希望保存比MSSQL接受的更小的DateTime值.

问题是项目中有很多实体要找到正确的DateTime字段.

该异常发生在SaveOrUpdate()之后,但不是由我想要保存的实体触发,而是在当前会话中加载的任何其他实体现在受flush()的影响.

我怎样才能找出哪个字段真正应对异常负责?

nki*_*kes 0

您是否尝试过强制 NHib 输出生成的 sql 并检查流氓日期时间?如果您使用NHProfiler之类的东西(我不为他们工作,只是一个满意的客户),那会更容易,但实际上,为您所做的一切都是显示/隔离 sql​​,您可以从输出窗口执行此操作需要一点额外的努力。诀窍是,如果它是一个非常深的保存,那么可能会有很多 sql 需要阅读,但您很可能能够很快发现它。