(流暢)NHibernate進展事件的冗長交易?

event-listener fluent-nhibernate progress-indicator sqlbulkcopy

我們已經連接了ISaveOrUpdateEventListener事件,希望我們可以將它綁定到一個非常大的模型的保存遍歷期間訪問的每個節點的進度條更新,但事件只在保存操作開始時觸發一次(僅在節點上)在其上啟動Save()而不是在任何子節點上。

還有其他更合適的事件可以聽嗎?

我們也嘗試通過自己進行遍歷來分解保存操作(分層模型),但這似乎進一步降低了性能。

也許我們正試圖解決FNH無意使用的問題。我們是新手。

我們還使用SqlBulkCopy設置了另一種解決方案,如其他地方所推薦的那樣。

我們已經看到FNH主要用於較小事務(OLTP)的註釋,而不是我們的問題(大量數據的信號處理)所限制的窮舉模型的類型。

背景:

我們試圖在一個更大的數據庫項目上使用Fluent NHibernate,其數據來自相當複雜的實時分析(高頻,多輸入信號,長實驗時間等)。在我們構建的原型中,我們看到目前非常可怕的等待時間,並需要掛鉤某種可靠的進度指示器。

一般承認的答案

是的,現在已經確認 - 正如我上面的評論所述。一個(可能的)解決方案是簡單地轉動Cascades並手動執行模型遍歷並執行顯式Save()調用。

這有效,雖然它不像處理事件那樣整潔。儘管如此,考慮到NHibernate的genuin設計,我打賭肯定會有一個可能被截獲的事件 - 問題就在於什麼名字。 ...我打賭這裡有人知道更多。

同樣為了提高性能,我們使用了無狀態會話,體驗了不同的批量大小,並定期/顯式調用Flush()和Clear()。有關詳細信息,請參閱以下文章

http://davybrion.com/blog/2008/10/bulk-data-operations-with-nhibernates-stateless-sessions/

http://ideas-net.blogspot.com/2009/03/nhibernate-update-performance-issue.html

希望這可以幫助。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因