我正在开发一个当前使用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,还是......?
答案 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());
}