【发布时间】:2015-04-01 12:18:09
【问题描述】:
我有一个带有级联列表的对象,它的映射方式如下:
HasMany(x => x.Products).Cascade.AllDeleteOrphan(); //.BatchSize(10000);
将 20000 个产品添加到列表后,提交需要超过 30 秒(而最长应为 3 秒)。
我需要的是一种批量插入。我可以采用这种方法:Speed up bulk insert operations with NHibernate。我知道这个解决方案使用StatelessSession,但无论如何,我希望在我的映射中配置这些东西,将对象直接添加到我的Entity 的列表中,NHibernate 会处理剩余的东西。在列表的映射上设置BatchSize 似乎没有任何效果。
有什么方法可以在可接受的时间内完成这项任务吗?
【问题讨论】:
-
批量插入并不是每个实体都需要的东西。每当我需要它时,我都会在无状态会话
bulkInsert上创建一个单独的扩展方法,用于此目的 -
这就是我所担心的。但希望最后死去:-)
-
如果您阅读 ayande 的博客,他说同样的事情:0 批量插入不是 ORM 的工作,因为您需要专门的工具,所以不要对任何 ORM 有太多期望批量复制/上传
标签: nhibernate fluent-nhibernate