2009-09-01 22 views
2

如果我在配置應用程序使用高住低訓ID生成數據庫中每行,我每看到在數據庫中插入行的一個往返。我讀過的所有文件都表明,我應該看到更少的往返次數。NHibernate的希洛ID發生器進行往返插入

我的對象都通常構造(流利)爲這樣:

ID(T => t.Id).GeneratedBy.HiLo( 「MyObject_Identity」, 「MaxId」, 「1000」);

另外我的批量大小設置爲75的連接。

我知道我可能做一些愚蠢的比較。

回答

0

你的意思是你看到的每個插入往返去獲取ID的新高值?如果是的話,你是否在每個操作中使用SessionFactory的新實例? SessionFactory負責管理高價值的檢索。通常,每個應用程序實例只能有一個SessionFactory(通過單例或IoC容器)。

+0

是。在單個會話工廠(實際上是一個會話)內,我看到每次實例保存一次往返。我已經將應用程序還原爲使用身份。我知道這是一個與nhibernate反模式,但它的作品。後來我注意到在對象級別有一個批處理大小屬性。我想我有一些配置錯誤的東西。 – JeffreyABecker 2009-09-21 14:29:32

+0

我有同樣的問題,有趣的是找到一個解決方案。 – Restuta 2011-02-01 16:32:01

+0

爲什麼你接受了答案,似乎沒有回答我們的問題。我應該重新打開同一個嗎? – Restuta 2011-02-01 16:49:59