Oracle 11gでNHibernate 3.2の操作insert
の処理をスピードアップしたいと思います。 、MyClass.PropertyX:これを行うには、私は私のforeach
ループで...NHibernateを使用したバルク挿入操作の高速化
Session.Save(entity);
Session.Flush();
Session.Clear();
を試みたが、セッション中に不足しているオブジェクトによって引き起こされた例外ました:
を遅延役割のコレクションを初期化に失敗しました
:なしセッションまたはセッションが<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)
を設定AN次の例外だ:いいえバッチサイズは、バッチ処理が 無効になっている、セッションファクトリ用に定義されなかった
を。バッチ処理を有効にするには、adonet.batch_size = 1に設定します。
この例外がスローされる唯一の場所はNonBatchingBatcherなので、セッションに間違ったバッターがあるようです。
ここで何が間違っていますか? NHibernateでバッチインサートをスピードアップするにはどうすればいいですか?
あなたの最初の例外は何ですか?また、ループ内で 'Flush' *を実行すると、何もバッチ処理されません。 –
@Diego Mijelshonさんが例外メッセージ – deamon
を追加しました@deamonはこれはマルチスレッドですか? – Newbie