首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用IDataReader从SqlBulkCopy返回记录

使用IDataReader从SqlBulkCopy返回记录
EN

Stack Overflow用户
提问于 2012-12-08 11:08:44
回答 1查看 366关注 0票数 0

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

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

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

下面是我的代码中的一段代码:

代码语言:javascript
复制
    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;
    }

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-11 12:26:38

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

请注意,这在我的场景中工作得很好,因为此表中的数据仅由此调度器插入/更新。如果这是一个应用程序,其中的数据可以来自多个地方或用户,这种方法将需要重新考虑或调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13774053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档