我想在Oracle 11g上使用NHibernate 3.2加速批量操作insert
。要做到這一點我想使用NHibernate加速批量插入操作
Session.Save(entity);
Session.Flush();
Session.Clear();
...我foreach
循環,但有造成失蹤的Session對象異常:
未能懶洋洋地初始化角色的集合:MyClass.PropertyX,沒有會話或會話關閉
的另一種嘗試是設置批量大小:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
<property name="connection.connection_string">xxx</property>
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
<property name="adonet.batch_size">50</property>
<property name="query.substitutions">true=1, false=0</property>
<property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory, NHibernate</property>
</session-factory>
</hibernate-configuration>
另外我在代碼中設置Session.SetBatchSize(50)
的有以下異常:
沒有批量大小爲會話工廠定義,配料是 禁用。設置adonet.batch_size = 1啓用批處理。
拋出此異常的唯一位置是NonBatchingBatcher,所以它看起來像我的會話有錯誤的批處理。
這裏有什麼問題?如何加快NHibernate的批量插入(不使用statlese會話)?
你的第一個例外是什麼?另外,如果你在循環內執行'Flush' *,你不會分配任何東西。 – 2012-03-30 16:56:32
@Diego Mijelshon添加了異常消息 – deamon 2012-04-02 07:55:20
@deamon是以多線程的方式嗎? – Newbie 2012-04-04 19:05:12