3

バッチ処理を実行できるように Fluent NHibernate をセットアップしようとしています。session.SetBatchSize(x) を実行しようとすると、「セッション ファクトリにバッチ サイズが定義されていないため、バッチ処理が無効になっています。バッチ処理を有効にするには、adonet.batch_size = 1 を設定してください」という NotSupportException がスローされます。ただし、SessionFactory プロパティを調べると、エントリ [adonet.batchsize, 1] があります。ここで露骨に見落としているものはありますか?

工場の作成 :

factory = Fluently.Configure()
          .Database(
               SQLiteConfiguration.Standard
               .UsingFile(fileName).AdoNetBatchSize(1)
            )
           .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Person>())
           .ExposeConfiguration(BuildSchema)
           .BuildConfiguration()
           .BuildSessionFactory();

挿入機能 :

 using(var session = factory.OpenSession())
 using (var transaction = session.BeginTransaction())
 {
       session.SetBatchSize(1); //Exception is being thrown here.

       session.Save(myPerson);  //myPerson uses an assigned Id (not Identity)

       transaction.Commit();
 }

AdoBatchSize メソッド (つまり config.Properties["adonet.batch size"] = "1"; ) を使用する代わりにプロパティ自体を手動で設定した場合にも、例外がスローされます。バッチ処理で Fluent NHibernate を使用するには、App.Config で何か設定する必要がありますか? この例外は、設定しようとすると引数をスローする NonBatchingBatcher の BatchSize プロパティのセッターから発生しているようです。adonet.batch_size の構成プロパティが SessionFactory に設定されている場合、SqlClientBatcher ではなく NonBatchingBatcher を使用するのはなぜですか?

ありがとう、ダブス。

4

0 に答える 0