Como recuperar valores de identidade gerados pelo servidor ao usar SqlBulkCopy
Eu sei que posso fazer uma inserção em massa na minha tabela com uma coluna de identidade, não especificando oSqlBulkCopyOptions.KeepIdentity
como mencionadoaqui.
O que eu gostaria de poder fazer é obter os valores de identidade que o servidor gera e colocá-los na minha tabela de dados ou mesmo em uma lista. eu viesta post, mas quero que meu código seja geral e não posso ter uma coluna de versão em todas as minhas tabelas. Todas as sugestões são muito apreciadas. Aqui está o meu código:
public void BulkInsert(DataTable dataTable, string DestinationTbl, int batchSize)
{
// Get the DataTable
DataTable dtInsertRows = dataTable;
using (SqlBulkCopy sbc = new SqlBulkCopy(sConnectStr))
{
sbc.DestinationTableName = DestinationTbl;
// Number of records to be processed in one go
sbc.BatchSize = batchSize;
// Add your column mappings here
foreach (DataColumn dCol in dtInsertRows.Columns)
{
sbc.ColumnMappings.Add(dCol.ColumnName, dCol.ColumnName);
}
// Finally write to server
sbc.WriteToServer(dtInsertRows);
}
}