使用事务范围来包装Rhino ETL进程

时间:2015-07-20 12:39:44

标签: scope

我使用Rhino ETL处理SQL SERVER和Excel文件提取/加载。

我在事务范围(c#)中放置了多个ETL进程(将数据插入到sql server表中),以便在出现任何错误或异常时可以回滚整个进程。

我不确定C#事务范围是否可以与ETL进程一起使用,但我的方式如下:

private void ELTProcessesInTransaction(string a, string b, int check)
{
    using (var scope = new TransactionScope())
    {

       using (ETLProcess1 etlProcess1 = new ETLProcess1(a, b))
       {
           etlProcess1.Execute();
       }
       using (ETLProcess2 etlProcess2 = new ETLProcess2(a, b))
       {
           etlProcess2.Execute();
       }
       if (!_InSeverDB.HasError(check))
          scope.Complete();//Commits based on a condition
    }
}

这根本不会回滚事务。我尝试删除scope.Complete()行,但进程仍在提交。

请告诉我需要纠正的地方或整个方法是否正确。

0 个答案:

没有答案