我使用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()行,但进程仍在提交。
请告诉我需要纠正的地方或整个方法是否正确。