无法使TransactionScope工作

时间:2016-06-23 12:19:02

标签: c# asp.net ms-access

如何使用TransactionScope?我几乎找不到任何相关信息。当我尝试调用它时,我的项目不会识别TransactionScope并变为红色。我试过using System.Transactions.TransactionScope;,但它也没有用。

一旦它开始工作,那么Method_A();Method_C();会在交易中吗?意思是否有任何事情会失败在Method_C();中,一切都会回滚,包括Method_A();Method_B();吗?这就是我想要的行为。

private void method_A(){/* doing tons of db stuff */}
private void method_B(){/*...*/}
private void method_C(){/*...*/}


protected void Insert_OnClick(object sender, EventArgs e)
{
    using(TransactionScope tran = new TransactionScope())
    {
        Method_A();
        Method_B();
        Method_C();

        tran.Complete();
    }
}

使用C#,ASP.NET和ms Access。

1 个答案:

答案 0 :(得分:2)

TransactionScope不适用于Microsoft Access,因此您无法使用它。

有关事务范围的替代实现,请查看此question

关于交易范围,请参阅此link

相关报价:

  

在一个Workspace对象中,事务始终是Workspace的全局事务,并不仅限于一个Connection或Database对象。如果在Workspace事务中对多个连接或数据库执行操作,则解析事务(即使用CommitTrans或Rollback方法)会影响该工作空间内所有连接和数据库上的所有操作。

这意味着您在工作区内的Access-File上执行的所有操作都在事务中,即使您在事务仍在进行时从其他位置访问工作区也是如此。

牢记this

  

使用Access数据库的事务行为与ODBC数据源(如Microsoft SQL Server)的行为不同。例如,如果数据库连接到文件服务器,并且文件服务器在事务有时间提交其更改之前停止,则数据库可能会处于不一致状态。如果您需要有关持久性的真正事务支持,则应使用客户端/服务器体系结构进行调查。