C# 立即删除通过SqlBulkCopy.WriteToServer插入的记录

C# 立即删除通过SqlBulkCopy.WriteToServer插入的记录,c#,sql-server,sqlbulkcopy,C#,Sql Server,Sqlbulkcopy,在特定的业务案例流中,我需要立即删除通过SqlBulkCopy插入的记录。代码在大多数情况下运行良好,但我看到,有时候删除过程找不到这些记录,数据也不会被删除。WriteToServer方法是否可能将控制执行返回到下一行,而不完成记录的插入 这是我的代码: // Insert using (var bulkCopy = new SqlBulkCopy(strConnectionString)) { bulkCopy.BatchSize = 5000; bulkCopy.Destina

在特定的业务案例流中,我需要立即删除通过
SqlBulkCopy
插入的记录。代码在大多数情况下运行良好,但我看到,有时候删除过程找不到这些记录,数据也不会被删除。
WriteToServer
方法是否可能将控制执行返回到下一行,而不完成记录的插入

这是我的代码:

// Insert
using (var bulkCopy = new SqlBulkCopy(strConnectionString))
{
   bulkCopy.BatchSize = 5000;
   bulkCopy.DestinationTableName = tableName;
   bulkCopy.WriteToServer(dataTable)
}

// Few business case conditions
// Delete - Get Ids and pass as table param to the proc
using (var context = _dataContextFactory.CreateContext())
{
    var tableParam = new SqlParameter
            {
                  ParameterName = "@Ids",
                  Value = data,
             };
    context.ExecuteSqlCommand("[uspDeleteData]",tableParam);
} 

如果是这种情况,请有人建议,我如何立即删除这些记录。

“有时delete proc找不到这些记录,数据也不会被删除”=>这是一个奇怪的说法,需要更多的调查。你能重现这个问题吗?它是否与特定的数据集一致?您正在分析数据库以诊断问题吗?如果您要删除,那么为什么还要首先编写呢。您可以改为写入临时表或使用事务和回滚。写入和立即删除没有任何意义。添加您的程序代码。这并不能回答为什么要插入要立即删除的数据的问题。您可以在SqlBulkCopy.Write之前过滤掉已删除的数据。无论如何,只要不存在任何冲突,SqlBulkCopy将写入您发送的所有数据。您还应该考虑将Sql BulkKebug复制到临时表中(将已删除的ID复制到另一个表中,然后做一个插入服务器端检查TEMP和IDS表)。但是为什么您是第一个大容量插入记录,只在插入之后立即删除它们?难道你不能检查一下这些条件,如果满足了这些条件,就不要插入那些行吗??