繁体   English   中英

NHibernate SaveOrUpdate 需要很长时间

[英]NHibernate SaveOrUpdate takes ages

我有一个数据集要使用 NHibernate 在 dotnet6 上使用 c# 插入到 mssql 数据库中。 该数据集包含近 8k 个要在数据库中插入或更新的条目。 代码看起来像这样。

public void Execute<T>(IEnumerable<T> layouts)
    {
        using (Session = mSessionFactory.OpenSession())
        {
            using (var tx = Session.BeginTransaction())
            {
                foreach (T layout in layouts)
                {
                    Session.SaveOrUpdate(layout);
                }
                tx.Commit();
            }
        }
    }

(使用 vs22 的内置分析器我可以观察到每个条目大约需要 80 毫秒:8000/(1000/80)=640s/60=10min)
使用一组布局(数据集)调用此方法大约需要 10~15 分钟! 鉴于只有一个引用表连接到数据库中的主表,我无法想象这需要这么长时间。

我错过了什么吗?

使用

int i = 0;
                foreach (T layout in layouts)
                {
                    Session.SaveOrUpdate(layout);
                    i++;
                    if (i % 20 == 0)
                    {
                        Session.Flush();
                        Session.Clear();
                        i = 0;
                    }
                }
                tx.Commit();

性能提高了很多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM