我正在使用大量的JSON数据并通过SQLBulkCopy类将其存储在SQL Server数据库中。
SqlBulkCopy bulkInsert = new SqlBulkCopy(conn);
bulkInsert.DestinationTableName = "dbo.Orders";
conn.Open();
bulkInsert.WriteToServer(rows.ToArray());
rows是DataRow类型的列表。
我消耗的数据是订单,因此大部分数据都被插入到订单表中,但是其他一些表也需要插入,但是这些插入必须引用插入到其中的行。订单表。
这是可以使用SQLBulkCopy还是我必须手动插入每一行,查询插入行的数据库以获取引用字段,然后在将来的插入中使用该值?
答案 0 :(得分:1)
SqlBulkCopy无法返回插入的标识值。
所以只使用SqlBulkCopy是不可能的,但可以通过使用临时表的一些技巧来实现。
简而言之:
免责声明:我是该项目的所有者Bulk Operations
该项目通过添加一些功能克服了SqlBulkCopy限制:
示例:
var bulk = new BulkOperation(connection)
bulk.DestinationTableName = "dbo.Orders";
bulk.ColumnMappings.Add("OrderId", ColumnMappingDirectionType.Output);
bulk.ColumnMappings.Add("Price");
bulk.ColumnMappings.Add("Quantity");
bulk.BulkInsert(rows);