Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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_.net_Sql Server - Fatal编程技术网

C# 使用SQLBulkCopy插入数据后检索标识列

C# 使用SQLBulkCopy插入数据后检索标识列,c#,sql,.net,sql-server,C#,Sql,.net,Sql Server,我有一个模型: public class A { public int NameID {get; set; } //this represents the identity column in the database public string Name { get; set; } public string Value { get; set; } } 我使用一个EnumerableDataReader,它是IDataReader的一个实现,除了在

我有一个模型:

public class A {
       public int NameID {get; set; }  //this represents the identity column in the database
       public string Name { get; set; }
       public string Value { get; set; }
}
我使用一个EnumerableDataReader,它是IDataReader的一个实现,除了在插入之后没有填充identity属性:A.NameID之外,它似乎工作得很好。这是我的全部代码:

       var dr = new EnumerableDataReader<A>(lst);

        using (var bulkCopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction)) {
            bulkCopy.ColumnMappings.Add(nameof(A.NameID), "nameid");
            bulkCopy.ColumnMappings.Add(nameof(A.Name), "name");
            bulkCopy.ColumnMappings.Add(nameof(A.Value, "value");
            bulkCopy.DestinationTableName = "NameTable";
            bulkCopy.WriteToServer(dr);
        }
var dr=新的可枚举数据读取器(lst);
使用(var bulkCopy=new SqlBulkCopy(connectionString,SqlBulkCopyOptions.UseInternalTransaction)){
添加(nameof(A.NameID),“NameID”);
bulkCopy.ColumnMappings.Add(nameof(A.Name),“Name”);
bulkCopy.ColumnMappings.Add(nameof(A.Value,“Value”);
bulkCopy.DestinationTableName=“NameTable”;
bulkCopy.WriteToServer(dr);
}
此时,我希望所有对象的“NameID”都填充该行数据库中当前的标识列值


我做错了什么?

SqlBulkCopy
只处理数据的复制,不是一个高级数据库层。因此,它不负责收回ID,如果它愿意,实际上也不能这样做

most遵循的模式是使用
SqlBulkCopy
插入临时表,然后使用
insert INTO..OUTPUT Inserted.Id..SELECT*FROM#Tmp
将这些行放入主表

这将允许您收回插入的ID并更新模型