使用BulkCopy c#在2个表中插入的恢复标识

时间:2018-06-03 19:10:11

标签: c# sql asp.net performance each

我有两张桌子:

汽车

  car_id(pk), 
  color, 
  model
  price

CarDetail

 cardetail_id, 
 car_id(fk),
 owner_name

我目前同时插入2个寄存器,先是Car,然后我恢复汽车标识,然后插入Car_detail插入

public void insert(Car car)
{
    insert(car)....
    var identityCar = select last identity from sql..

    var carDetail = new CarDetail();
    carDetail.carId = identityCar;
    carDetail.owner_name = "terminator";
    insertDetail(carDetail);
}

但是现在我需要从Excel文件中插入1000条汽车记录,我将数据从Excel传递到列表并将记录插入到foreach但是它需要太长时间且性能缓慢...因此我想使用BulkCopy,我将Excel数据传递给数据表插入

using (var connection = new SqlConnection(URL_DATASOURCE))
{
    connection.Open();
    SqlBulkCopy sqlBulk = new SqlBulkCopy(connection);

    sqlBulk.DestinationTableName = "Car";
    sqlBulk.WriteToServer(dataTableCars);                        
}

这个工作完美但它会插入所有记录,我需要恢复每个记录的身份才能插入汽车细节:/

有什么想法吗?

0 个答案:

没有答案