3

我正在尝试设置 Fluent NHibernate 以允许我进行批处理。当我尝试 session.SetBatchSize(x) 时抛出 NotSupportException,它指出“没有为会话工厂定义批处理大小,禁用批处理。设置 adonet.batch_size = 1 以启用批处理。” 但是,当我检查 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"; ),也会引发异常。是否必须在 App.Config 中设置任何内容才能使用 Fluent NHibernate 进行批处理?此异常似乎来自 NonBatchingBatcher 的 BatchSize 属性的设置器,如果您尝试设置它,它会抛出参数。如果在 SessionFactory 上设置了 adonet.batch_size 的配置属性,为什么它使用 NonBatchingBatcher 而不是 SqlClientBatcher?

谢谢,配音。

4

0 回答 0