假设我们有一个产品和类别(很多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中的错误吗?是否可以在批量插入\更新期间防止相关实体的解除?