如何使用Enterprise Library 5.0实现使用System.Transactions.Transaction?

时间:2012-01-24 18:08:00

标签: c# .net transactions enterprise-library

我想将System.Transactions.Transaction与Enterprise Library 5.0一起使用。企业库允许使用Execute *函数传递System.Data.Common.DbTransaction类型。它试图将System.Transactions.Transaction强制转换为System.Data.Common.DbTransaction。

代码:

Database db = null;
object returnValue;
Transaction ambientTransaction = Transaction.Current;

db = DatabaseFactory.CreateDatabase(MainConnection);
returnValue = db.ExecuteScalar((DbTransaction)ambientTransaction, procedureName, parameterValues);

如何使用System.Transactions.Transaction与Enterprise Library 5.0一起使用?

2 个答案:

答案 0 :(得分:0)

您似乎不需要明确传递它,从3.0及更高版本的Enterprise Library中内置了支持。它查找当前事务并在可用时使用它。在David Hayden's site找到答案。

答案 1 :(得分:0)

请尝试以下操作:

Database db = null;
object returnValue;

using (TransactionScope transaction = new TransactionScope())
{
    db = DatabaseFactory.CreateDatabase(MainConnection);
    returnValue = db.ExecuteScalar(procedureName, parameterValues);
    transaction.Complete();
}