首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Fluent NHibernate批量插入实体集合

使用Fluent NHibernate批量插入实体集合
EN

Stack Overflow用户
提问于 2012-07-06 01:02:10
回答 1查看 15.2K关注 0票数 19

我正在尝试使用fluent NHibernate将一个大型对象集合插入到一个表中,使用一个调用保存或更新集合中的每个实体,并在foreach循环中传递。我一直在将批处理大小设置为集合的大小,但是我在Ayende的博客上读到,不建议将其设置为较大的值,因此我将其设置为250,然而,当我在NHProf中查看集合时,我看到的是insert语句流(集合大约有20000个条目),而不是一组批处理的插入调用。

这看起来非常低效,并且花费的时间比我预期的要长得多,这是一个非常基本的查询-将一个值插入到SQL Server 2008数据库中的25列中(是的,这是一个可以改进的地方,但它是一个遗留数据库,我现在坚持使用它)-所以我只能假设我做错了。

有没有推荐的使用NHibernate插入大型实体集合的方法?通过使用SaveOrUpdate上的保存,是否可以提高效率?

add方法的代码- SetBatchSize调用将批处理的上限设置为250,如果小于250,则设置为集合大小:

代码语言:javascript
复制
public void Add(IEnumerable<TEntity> entities)
{
    var session = GetCurrentSession();
    using (var transaction = session.BeginTransaction())
    {
        entities = entities.ToList();

        session.SetBatchSize(SetBatchSize(entities.Count()));

        foreach (var entity in entities)
            session.SaveOrUpdate(entity);

        transaction.Commit();
    }
}

对于这个稍微模糊的问题,我很抱歉,我感觉我只是在以错误的方式处理事情,任何指示都将非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-06 01:15:48

您将需要使用StatelessSession进行批量插入。

(相关:Inserts of stateless session of NHibernate are slow)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11349088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档