NPoco InsertBulk()用了45 *分钟*来插入20,000条记录

时间:2017-03-03 18:35:36

标签: c# winforms bulkinsert npoco

我正在开发一个当前使用DataTables / DataAdapter的Winforms应用程序,重点是将分隔文本导入/处理到嵌入式SQL Server Compact数据库中。

它有效,但我并不是疯狂地将DataRows传递给我的应用而不是POCO。我想我会窥探ORM的世界以进行比较。 NPoco看起来很好,因为它明确支持SQL Server Compact和简单的语法。但...

.remove()

我被这有多慢了! 45分钟的挂钟时间。 (获得的20,000条记录的获取时间是可以接受的,但仍然可以......)

为了进行比较,我可以使用准备好的命令导入20,000多条记录。在大约2.5秒内更新循环中的参数值。 DataAdapter.Update是8秒。

ORM是否不适合我的用例,或者我应该尝试不同的ORM,还是......?

1 个答案:

答案 0 :(得分:1)

Per @John,此问题的解决方法是将批量插入包装在事务中。

    using (Database db = new Database(CONNECTIONSTRING, DatabaseType.SQLCe))
    {
        System.Diagnostics.Debug.Print(DateTime.Now.ToString());
        db.BeginTransaction();     // <------
        db.InsertBulk(many);
        db.CompleteTransaction();  // <------
        System.Diagnostics.Debug.Print(DateTime.Now.ToString());
    }