[英]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.