我有这样的代码:
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");
}
}
假设在插入"0"时发生异常;表2Data";。如果是,则数据库已经插入";表1Data";但由于现在不会插入";表3Data";或";表4数据";。
不管";表2Data";工作与否,我需要";表3Data";以及";表4数据";插入。
处理这个问题的最佳方法是什么?我可以在我的异常中添加类似goto语句的内容吗?这样它就可以继续插入吗?我主要希望避免将每个BulkInsert放入自己的尝试捕获中。
为什么不有这样的代码:
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代码fail/pass的if条件,在其中进行递归调用?