我正在使用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;
}提前谢谢。
发布于 2012-12-11 12:26:38
经过大量研究,我得出的结论是,这是不可能的。我想出了一个解决办法。我所做的是在执行查询之前将DateTime.Now()写到一个变量中。在执行查询之后,我对LastUpdated时间戳字段大于插入/更新前记录的DateTime变量的所有记录执行了select查询。
请注意,这在我的场景中工作得很好,因为此表中的数据仅由此调度器插入/更新。如果这是一个应用程序,其中的数据可以来自多个地方或用户,这种方法将需要重新考虑或调整。
https://stackoverflow.com/questions/13774053
复制相似问题