I'm using C# and .NET Core 6. I want to bulk insert about 100 rows at once into database and get back their Ids from BigInt identity column.
I have tried lot of different variants, but still do not have the working solution. When I preview table variable, the Id column has DbNull value and not the newly inserted Id.
How to get Ids of newly inserted rows?
What I have:
SQL Server table:
CREATE TABLE dbo.ExamResult 
(
    Id bigint IDENTITY(1, 1) NOT NULL,
    Caption nvarchar(1024) NULL,
    SortOrder int NOT NULL,
    CONSTRAINT PK_ExmRslt PRIMARY KEY CLUSTERED (Id)
) ON [PRIMARY]
GO
C# code:
private static void BulkCopy(IEnumerable<ExamResultDb> examResults, SqlConnection connection)
{
    using (var bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.Default, null))
    {
        var table = CreateDataTable(examResults);
        bulkCopy.DestinationTableName = "ExamResult";
        bulkCopy.EnableStreaming = true;
        foreach (var item in table.Columns.Cast<DataColumn>())
        {
            if (item.ColumnName != "Id")
            {
                bulkCopy.ColumnMappings.Add(item.ColumnName, item.ColumnName);
            }
        }
        using (var reader = new DataTableReader(table))
        {
            bulkCopy.WriteToServer(reader);
        }
    }
}
private static DataTable CreateDataTable(IEnumerable<ExamResultDb> examResults)
{
    var table = new DataTable("ExamResult");
    table.Columns.AddRange(new[]
                           {
                               new DataColumn("Id", typeof(long)),
                               new DataColumn("Caption", typeof(string)),
                               new DataColumn("SortOrder", typeof(int))
                           });
    ////table.Columns[0].AutoIncrement = true;
    ////table.PrimaryKey = new[] { table.Columns[0] };
    foreach (var examResult in examResults)
    {
        var row = table.NewRow();
        row["Caption"] = examResult.Caption;
        row["SortOrder"] = examResult.SortOrder;
        table.Rows.Add(row);
    }
    return table;
}
 
     
    