微软企业库中的事务处理

public bool Transfer( int transactionAmount, int sourceAccount, int destinationAccount)
{
bool result = false ;

// CreatetheDatabaseobject,usingthedefaultdatabaseservice.The
// defaultdatabaseserviceisdeterminedthroughconfiguration.
Databasedb = DatabaseFactory.CreateDatabase();

// Twooperations,onetocreditanaccount,andonetodebitanother
// account.
string sqlCommand = " CreditAccount " ;
DBCommandWrappercreditCommandWrapper
= db.GetStoredProcCommandWrapper(sqlCommand);

creditCommandWrapper.AddInParameter(
" @AccountID " ,DbType.Int32,sourceAccount);
creditCommandWrapper.AddInParameter(
" @Amount " ,DbType.Int32,transactionAmount);

sqlCommand
= " DebitAccount " ;
DBCommandWrapperdebitCommandWrapper
= db.GetStoredProcCommandWrapper(sqlCommand);

debitCommandWrapper.AddInParameter(
" @AccountID " ,DbType.Int32,destinationAccount);
debitCommandWrapper.AddInParameter(
" @Amount " ,DbType.Int32,transactionAmount);

using (IDbConnectionconnection = db.GetConnection())
{
connection.Open();
IDbTransactiontransaction
= connection.BeginTransaction();

try
{
// Creditthefirstaccount
db.ExecuteNonQuery(creditCommandWrapper,transaction);
// Debitthesecondaccount
db.ExecuteNonQuery(debitCommandWrapper,transaction);

// Committhetransaction
transaction.Commit();

result
= true ;
}

catch
{
// Rollbacktransaction
transaction.Rollback();
}

connection.Close();

return result;
}

在这段例子代码中,其核心就是关于 IDbTransaction的使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值