具有代理关联的NHibernate批量保存实体

时间:2015-06-22 13:52:15

标签: performance nhibernate fluent-nhibernate

假设我们有一个产品和类别(很多P到一个C)。

如果我们想要在不提取类别的情况下插入具有已知类别ID的新产品,我们会使用以下代码:

Product product = new Product();
product.Category = Session.Load<Category>(5);
Session.Save(product);

但是如果我们想在一个批次中一次插入1000个产品并设置adonet.batch_size = 1000, NHibernate将获取与正在插入的产品相关联的所有类别。< / p>

在批量保存期间,调用方法IsProcessedAfterAllAssociatedEntities并调用关联实体的GetHashCode。此时,DefaultLazyInitializer拦截调用并触发关联实体的ImmediateLoad,从而导致实体获取。

它是NHibernate中的错误吗?是否可以在批量插入\更新期间防止相关实体的解除?

0 个答案:

没有答案