C# 使用SqlBulkCopy在大容量插入后获取主键列值
有人能帮我在批量插入后如何获取主键列的列值吗 我使用SqlBulkCopy一次向表中插入多行(比如表1)。插入行后,我需要表1中的列MsgId(PK)的ID。我需要使用这些ID,它是另一个表2中的外键 这是我的密码C# 使用SqlBulkCopy在大容量插入后获取主键列值,c#,sql,sql-server,sqlbulkcopy,C#,Sql,Sql Server,Sqlbulkcopy,有人能帮我在批量插入后如何获取主键列的列值吗 我使用SqlBulkCopy一次向表中插入多行(比如表1)。插入行后,我需要表1中的列MsgId(PK)的ID。我需要使用这些ID,它是另一个表2中的外键 这是我的密码 DataTable dtMessageDetails = new DataTable("Message Details"); SqlBulkCopy copier = new SqlBulkCopy(Connectionstring);
DataTable dtMessageDetails = new DataTable("Message Details");
SqlBulkCopy copier = new SqlBulkCopy(Connectionstring);
copier.DestinationTableName = "Table 1";
copier.WriteToServer(dtMessageDetails);
在插入批量之前锁定表。你知道行的数量,如果你选择最后一个id,知道元素的总数,那么你就会知道它们的id。看起来有一个
SqlRowsCopied
事件,但是它是为UI交互设计的,所以我不确定它有多可靠,或者它如何执行调用每一行的操作。否则,您可以在插入中指定ID,但这有点难看。您的PK是如何构建的?它是以某种方式自动生成的吗?是的,它是一个标识列并且是自动生成的。如果您同时插入呢?这就是为什么我们首先锁定表的原因,不是吗?@LajosArpad在锁定表之后,我们应该在什么时候获取表的最后一个id。表的最后一个id应该在插入批量之前还是在插入批量之后获取?你能解释一下表锁是什么时候发生的吗?