C# Nhibernate 保存列表

标签 c# sql-server nhibernate

今天我有一个包含 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/

相关文章:

sql-server - MS SQL服务器: int Ids Jumping by 1000

nhibernate - 从数据库读取时,HasMany 关系导致 "Found shared references to a collection"

sql-server - 如何使用代码检索 SQL Server 中表的现有索引?

c# - Nhibernate - 找不到属性的 setter/getter

c# - 如何在 C# 中创建通用管道?

sql-server - 使用生成脚本从sql server 2012导出日期数据

sql - Sql Server 的@@Identity 和@@error 的mysql 等价物是什么以及如何在mysql 中使用try catch

c# - 如何检查是否设置了 WaitHandle?

c# - 接口(interface)和 header

c# - Windows 商店应用程序中的登录屏幕 - MessageDialog