<property name="adonet.batch_size">100</property>
加了这句,发现在oracle不起作用。一样的代码,如果在sql08下运行能生效。
using (var session = SessionFactory.NHSessionFactory.OpenStatelessSession())
{
using (var tx = session.BeginTransaction())
{
try
{
foreach (var entity in entities)
{
session.Insert(entity);
}
tx.Commit();
}
catch (Exception ex)
{
}
}
}
oracle运行后如下图:
SQL08执行后如下图:
明显看出oracle不支持批量插入那样。再深看了NH源代码发现oracle批量导入,有一个类,NHibernate.AdoNet.OracleDataClientBatchingBatcherFactory
打算引入该类:
<property name="adonet.factory_class">NHibernate.AdoNet.OracleDataClientBatchingBatcherFactory,NHibernate</property>
但插入时看到有批量导入的样子了,但事务提交tx.commit或session.flush().报了一个对象无法实例化的错误,然后把这个session通道关闭了。又再尝试引用NH源码入项目调试,但没有发现效果。
一天了,居然没有人有回复。难道这问题没有解决方案?
173844862 .net交流群,欢迎你的加入