我想在多个进程后使用 Rollback() 或 commit() 函数。
没有错误,但它不会 commit() 来更新数据库。
这是我的示例代码,
public void startTransaction(){
using(Ads_A_Connection = new AdsConnection(Ads_A_connection_string))
using(Ads_B_Connection = new AdsConnection(Ads_B_connection_string))
{
Ads_A_Connection.Open();
Ads_B_Connection.Open();
AdsTransaction aTxn = Ads_A_Connection.BeginTransaction();
AdsTransaction bTxn = Ads_B_Connection.BeginTransaction();
try{
string aResult = this.process1(Ads_A_Connection);
this.process2(Ads_B_Connection, aResult);
this.process3(Ads_A_Connection. Ads_B_Connection);
aTxn.Commit();
bTxn.Commit();
// there is no error, but it couldn't commit.
}catch(Exception e){
aTxn.Rollback();
bTxn.Rollback();
}
}
}
public string process1(conn){
// Insert data
return result;
}
public void process2(conn. aResult){
// update
}
public void process3(aConn, bConn){
// delete
// update
}
我想,这是因为超出了使用范围。因为我试图将所有代码放入 startTransaction() 方法中,所以它可以工作。但它看起来太脏了。
在多个(METHOD)过程之后如何使用 rollback() 或 commit()?
有人知道,请给我建议。
谢谢!
[编辑]
我只是在连接之前添加 TransactionScope,
using (TransactionScope scope = new TransactionScope())
{
using(Ads_A_Connection = new AdsConnection(Ads_A_connection_string))
using(Ads_B_Connection = new AdsConnection(Ads_B_connection_string))
{
.
.
但它会出错,它说“错误 5047:事务命令不在有效序列中。 ”
我需要更多提示:)