バッチ処理を実行できるように 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 を使用するのはなぜですか?
ありがとう、ダブス。