.NET c#如何使用linq2db进行大规模插入
本文关键字:大规模 插入 linq2db 何使用 NET | 更新日期: 2023-09-27 18:28:04
目前我正在使用Linq2db来管理我的C#应用程序的sqlite数据库。目前,我正在阅读一个24k+行的excel文件,我想知道如何加快ETL过程?
for (int row = start.Row; row <= end.Row; row++)
{
if (row == 1) // Title row
continue;
Stock stock = new Stock(Processor.GetStore(workSheet.Cells[row, 1].Text),
Processor.GetProduct(workSheet.Cells[row, 2].Text),
int.Parse(workSheet.Cells[row, 6].Text),
int.Parse(workSheet.Cells[row, 7].Text),
int.Parse(workSheet.Cells[row, 8].Text), 0, true);
Processor.AddStock(stock, false);
}
使用linq尝试了不同的方法,但我得到了更糟糕的计时结果。。。
var stocks = (from cell in workSheet.Cells["a:h"]
select new Stock(Processor.GetStore(workSheet.Cells[cell.Start.Row, 1].Text),
Processor.GetProduct(workSheet.Cells[cell.Start.Row, 2].Text),
int.Parse(workSheet.Cells[cell.Start.Row, 6].Text),
int.Parse(workSheet.Cells[cell.Start.Row, 7].Text),
int.Parse(workSheet.Cells[cell.Start.Row, 8].Text), 0, true)).ToList();
我要找的是这样的东西:
public static void MassStockInsert(List<Stock> stocks)
{
using (var db = new Processor())
{
db.Stock
.insert(stocks);
}
Processor.Stocks = ReloadStocks();
}
使用BulkCopy方法。
public static void MassStockInsert(List<Stock> stocks)
{
using (var db = new Processor())
{
db.BulkCopy(stocks);
}
Processor.Stocks = ReloadStocks();
}