2012-06-20 127 views
2

我正在使用NHibernate並從本地SQLExpress數據庫切換到Oracle11g。爲什麼NHibernate的adonet.batch_size設置被忽略 - session.SetBachSize()拋出異常?

我的代碼開始抱怨。會話對象的方法SetBatchSize()拋出一個System.NotSupported異常:

無批次大小爲會話工廠定義,配料被禁用。設置adonet.batch_size = 1啓用批處理。

它在SQLExpress數據庫上工作。好的,所以我將

<property name="adonet.batch_size">1</property> 

添加到配置中,但它仍會引發相同的異常。會議配料機屬性設置爲這個

值:{} NHibernate.AdoNet.NonBatchingBatcher

類型:NHibernate.Engine.IBatcher {} NHibernate.AdoNet.NonBatchingBatcher

如果我嘗試在事務內外設置批處理大小,它沒有任何區別。

回答

2

NHibernate只有一些RDBM的配料器。如果它沒有爲相關數據庫找到一個,它將默認爲不能批量處理的nonbatchingbatcher。你可以實現你自己的IBatcher

+0

因此oracle xe沒有batcher,我應該試着繞過SetBatchSize()調用 – mrt181

+1

你不能只指定一個全局的batch_size,或者你真的需要用SetBatchSize()來覆蓋它嗎? – Firo

+0

我已經做到了這一點,現在我知道如果我仍想使用它,我應該總是嘗試/捕獲SetBatchSize() – mrt181