我们正在使用 NHibernate 版本 4.0.4.4000 并使用 FluentNHibernate 版本 2.0.3.0 对其进行配置。
我正在尝试使用 Oracle 数据客户端批处理批处理器工厂 (OracleDataClientBatchingBatcherFactory) 在 Oracle 连接上设置批处理,并使用以下代码创建 NHConfiguration:
var cfg = new NHibernate.Cfg.Configuration().DataBaseIntegration(prop => {
prop.BatchSize = 1000;
prop.Batcher<OracleDataClientBatchingBatcherFactory>();
});
在会话刷新时获得以下异常:
System.NullReferenceException: Object reference not set to an instance of an object.
at NHibernate.AdoNet.OracleDataClientBatchingBatcher.SetArrayBindCount(Int32 arraySize)
at NHibernate.AdoNet.OracleDataClientBatchingBatcher.DoExecuteBatch(IDbCommand ps) ...
看起来 SetArrayBindCount 方法正在使用反射在 OracleCommand 中设置 ArrayBindCount 属性。此方法引发空引用异常。
有没有其他人遇到过同样的问题?我是否遗漏了什么或者它是 OracleDataClientBatchingBatcher 中的错误?
当我使用 SQL Client Batching Batcher Factory (SqlClientBatchingBatcherFactory) 时没有遇到这个问题
var cfg = new NHibernate.Cfg.Configuration().DataBaseIntegration(prop => {
prop.BatchSize = 1000;
prop.Batcher<SqlClientBatchingBatcherFactory>();
});
任何帮助将不胜感激,因为这目前正在阻止我们。
问题来源:https ://groups.google.com/forum/#%21topic/nhusers/-rzStjZSxmI