Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SqlBulkCopy在大容量插入后获取主键列值_C#_Sql_Sql Server_Sqlbulkcopy - Fatal编程技术网

C# 使用SqlBulkCopy在大容量插入后获取主键列值

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);

有人能帮我在批量插入后如何获取主键列的列值吗

我使用SqlBulkCopy一次向表中插入多行(比如表1)。插入行后,我需要表1中的列MsgId(PK)的ID。我需要使用这些ID,它是另一个表2中的外键

这是我的密码

        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应该在插入批量之前还是在插入批量之后获取?你能解释一下表锁是什么时候发生的吗?