用于级联列表的“批量插入”

时间:2015-04-01 12:18:10

标签: nhibernate fluent-nhibernate

我有一个带有级联列表的对象,该列表按以下方式映射:

HasMany(x => x.Products).Cascade.AllDeleteOrphan(); //.BatchSize(10000);

将20000个产品添加到列表后,提交需要30秒以上(最多3秒)。

我需要的是一种散装插件。我可以遵循这种方法:Speed up bulk insert operations with NHibernate。我知道这个解决方案使用的是StatelessSession,但无论如何,我希望在我的映射中配置这些东西,直接将对象添加到我Entity的列表中,NHibernate处理其余的东西。在列表映射上设置BatchSize似乎没有任何效果。

有没有办法在可接受的时间内完成这项任务?

2 个答案:

答案 0 :(得分:0)

我认为映射中的批量大小仅与获取有关。您可以尝试在nhibernate配置中使用此配置:

<property name="adonet.batch_size">250</property>

答案 1 :(得分:0)

唯一能加快速度的是使用无状态会话

(请阅读:Inserts of stateless session of NHibernate are slow

另外,请注意以下事项 - 使其更快

  

cfg.AutoCommentSql = false;

     

cfg.LogFormattedSql = false;