2013-04-02 30 views
0

我正在將複雜的對象樹保存回我的sql服務器數據庫。 對象樹上的一個字段必須是null或有趣的日期,因爲我收到此錯誤消息。nhibernate如何在複雜更新中找到壞字段

「SQLDATETIME溢出。必須是AM和 12/31/9999下午11:59:59 1753年1月1日12:00:00之間。」

我可以用視覺工作室檢查發現和深入,直到我找到狡猾的領域,但這是非常耗時。它也不會導致自己產生很大的日誌記錄錯誤信息。

是他們的方式,我可以得到nhibernate返回錯誤消息的有問題的字段名稱?

我沒有做任何幻想,

public TEntity Save(TEntity entity) 
    { 
     return Save(entity, false); 
    } 

注:我用流利的NHibernate的配置

回答

1

的NHibernate不會告訴你哪些領域造成這一點,但它很容易將它縮小:有99%的把握,這是一個非空的DateTime場,你有沒有初始化,所以它有1/1/1默認值(IIRC),這顯然是超出範圍。

+0

當然。但我的對象樹有很多這些領域。因此不得不深入研究以找到它。這幾乎肯定是由於我沿着線路繼承的一些不良數據,如果我可以直接跳到現場,它會使我的生活變得更加容易 – Crudler

0

我不能爲SQL Server說話,但使用SQLite,違規字段的名稱通常顯示,但在異常消息或內部異常,這是很容易錯過埋得這麼深。

這可能是有價值簡單地調用異常的ToString()方法,這將創建一個包含所有消息文本,包括所有的內部異常一個字符串,並顯示在消息框中。或者,在即時窗口中鍵入以下內容,例如,

Debug.Print(ex.ToString()) 

當你可以一次看到它,你可能會發現你需要埋在中間的某處。