今天我有一个包含 40.000 个寄存器的列表,我需要将其保存在我的 MSSQL 数据库中。当我试图保存它时,我检查了我的控制台显示,我意识到它正在逐项保存,这消耗了很多时间,即使我试图用下面的命令插入整个列表也是如此。
List<Andamento> andamentoList = fillAndamentoList(parameters);
_repository.Save(andamentoList);
_repository.Commit();
是否可以配置 NHibernate 并将其更改为仅通过一次数据库交互实际插入整个列表?
非常感谢,
最佳答案
要使用 NHibernate 进行批处理,您需要使用无状态 session :
using (var statelessSession = sessionFactory.OpenStatelessSession())
using (var transaction = statelessSession.BeginTransaction())
{
foreach (var item in andamentoList)
{
statelessSession.Insert(item);
}
transaction.Commit();
}
将它与批量大小相结合,以在您的配置文件中获得性能:
<property name="adonet.batch_size">100</property>
您可以阅读更多here .
关于C# Nhibernate 保存列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860256/