C# 使用IDataReader从SqlBulkCopy返回记录

C# 使用IDataReader从SqlBulkCopy返回记录,c#,sql-server,entity-framework,sqlbulkcopy,C#,Sql Server,Entity Framework,Sqlbulkcopy,我正在使用SqlBulkCopy类对数据库进行批量插入/更新。数据插入/更新后,我想对其进行更多的逻辑处理 目前,我的IDataReader有一系列要插入和更新的记录。针对数据库的所有操作都正常工作。但是,写入数据后,IDataReader对象不再有任何行 是否有办法保留行,并为插入的记录自动生成唯一标识符字段 以下是我的代码片段: public IDataReader DoBulkCopy<T>(List<T> DataToInsert, string Dest

我正在使用SqlBulkCopy类对数据库进行批量插入/更新。数据插入/更新后,我想对其进行更多的逻辑处理

目前,我的IDataReader有一系列要插入和更新的记录。针对数据库的所有操作都正常工作。但是,写入数据后,IDataReader对象不再有任何行

是否有办法保留行,并为插入的记录自动生成唯一标识符字段

以下是我的代码片段:

    public IDataReader DoBulkCopy<T>(List<T> DataToInsert, string DestinationTableName)
    {
        var BulkCopy = new SqlBulkCopy(ConfigurationManager.ConnectionStrings["MyConn"].ConnectionString, SqlBulkCopyOptions.KeepNulls);
        BulkCopy.BulkCopyTimeout = 0;
        BulkCopy.BatchSize = 50;
        BulkCopy.DestinationTableName = DestinationTableName;

        IDataReader reader = DataToInsert.AsDataReader();
        BulkCopy.WriteToServer(reader);
        BulkCopy.Close();

        return reader;
    }
public-IDataReader-DoBulkCopy(列表数据输入,字符串DestinationTableName)
{
var BulkCopy=new-SqlBulkCopy(ConfigurationManager.ConnectionStrings[“MyConn”].ConnectionString,SqlBulkCopyOptions.KeepNulls);
BulkCopy.BulkCopyTimeout=0;
BulkCopy.BatchSize=50;
BulkCopy.DestinationTableName=DestinationTableName;
IDataReader reader=DataToInsert.AsDataReader();
BulkCopy.WriteToServer(读卡器);
BulkCopy.Close();
返回读取器;
}

提前谢谢。

经过大量研究,我得出结论,这是不可能的。我想出了一个解决办法。我所做的是在执行查询之前将DateTime.Now()写入一个变量。执行查询后,我对所有记录执行了select查询,其中LastUpdated timestamp字段大于insert/update之前记录的DateTime变量

请注意,这在我的场景中效果很好,因为此表中的数据仅由此计划程序插入/更新。如果这是一个数据可以来自多个地方或用户的应用程序,那么这种方法需要重新思考或调整