我使用的是.NET核心WebApi和EF核心。
我有以下情况:
我的问题:
因此,我想创建一些任务来将批处理存储在DB中(但在.NET Core WebApi中),您不能运行后台任务,对吗?
你们是怎么做到的?
发布于 2020-04-14 10:22:30
一种方法是使用SqlBulkCopy将数据上传到临时表中,然后将数据查询到适当的表中。例如:
await connection.ExecuteAsync(@"CREATE TABLE #TempTable
(
[X] int NULL,
[Y] nvarchar(100) NULL,
[Z] datetime NULL
)", null, transaction);DataTable并使用CSV数据填充DataTable table = new DataTable();
dataTable.Columns.Add("X", typeof(int));
dataTable.Columns.Add("Y", typeof(string));
dataTable.Columns.Add("Z", typeof(DateTime));
//foreach csv record...
var row = dataTable.NewRow();
row["X"] = 1;
row["Y"] = "test";
row["Z"] = DateTime.Now;
dataTable.Rows.Add(row);using (var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, transaction))
{
bulkCopy.DestinationTableName = "#TempTable";
bulkCopy.EnableStreaming = true;
await bulkCopy.WriteToServerAsync(dataTable);
}await connection.ExecuteAsync("DROP TABLE #TempTable", null, transaction);我发现这种方法比EF要快得多,可以将数据批量导入数据库,同时维护一些业务逻辑。
https://stackoverflow.com/questions/61205204
复制相似问题