如何使用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。
答案 0 :(得分:2)
TransactionScope不适用于Microsoft Access,因此您无法使用它。
有关事务范围的替代实现,请查看此question。
关于交易范围,请参阅此link
相关报价:
在一个Workspace对象中,事务始终是Workspace的全局事务,并不仅限于一个Connection或Database对象。如果在Workspace事务中对多个连接或数据库执行操作,则解析事务(即使用CommitTrans或Rollback方法)会影响该工作空间内所有连接和数据库上的所有操作。
这意味着您在工作区内的Access-File上执行的所有操作都在事务中,即使您在事务仍在进行时从其他位置访问工作区也是如此。
牢记this:
使用Access数据库的事务行为与ODBC数据源(如Microsoft SQL Server)的行为不同。例如,如果数据库连接到文件服务器,并且文件服务器在事务有时间提交其更改之前停止,则数据库可能会处于不一致状态。如果您需要有关持久性的真正事务支持,则应使用客户端/服务器体系结构进行调查。