C# - 发生异常时处理 BulkInsert 吗?

问题描述

我有这样的代码

public void InsertData() {
    ...
    
    try {
        context.BulkInsert(Table1Data);
        context.BulkInsert(Table2Data);
        context.BulkInsert(Table3Data);
        context.BulkInsert(Table4Data);
    }
    catch (Exception ex) {
        Console.WriteLine("Data Failed to insert");
    }
}

假设在插入“Table2Data”时发生异常。如果是这样,那么数据库已经插入了“Table1Data”,但由于异常现在不会插入“Table3Data”或“Table4Data”。

无论“Table2Data”是否工作,我都需要插入“Table3Data”和“Table4Data”。

处理这个问题的最佳方法是什么?我可以在我的异常中添加类似 goto 语句的内容,以便它继续插入吗?我主要希望避免将每个 BulkInsert 放入自己的 try catch 中。

解决方法

为什么没有这样的代码:

public void InsertData() {
    ...
    
    foreach(var x in new[]{Table1Data,Table2Data,Table3Data,Table4Data})
      try {
        context.BulkInsert(x);
      }
      catch {
        Console.WriteLine("Data failed to insert");
      }
}
,

您可能可以从外部传递表数据作为参数,或者使用 finally 块,其中基于您的 try 代码失败/通过的 if 条件,进行递归调用?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...