2012-01-24 10 views
0

System.Transactions.TransactionをEnterprise Library 5.0と使いたいです。エンタープライズライブラリでは、Execute *関数を使用してSystem.Data.Common.DbTransaction型を渡すことができます。それは運がなくSystem.Data.Common.DbTransactionにSystem.Transactions.Transactionにキャストしようとしました。どのように実装するにはSystem.Transactions.TransactionとEnterprise Library 5.0を使用しますか?

コード:

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

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

がどのように私はエンタープライズライブラリ5.0を使用System.Transactions.Transactionを使うのでしょうか?

+0

問あなたは、ExecuteScalar ...挿入、更新、削除しますか...? db.ExecuteNonQueryがアクセス可能であればどうしたらいいでしょうか? – MethodMan

答えて

1

明示的に渡す必要はないようですが、サポートはバージョン3.0以降のEnterprise Libraryに組み込まれています。現在のトランザクションを探し、それが利用可能であればそれを使用します。答えはDavid Hayden's siteです。

0

は、次の試してください:あなたがやってたり渡すことを期待しているクエリの種類

Database db = null; 
object returnValue; 

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

基本的に私がやったこと。私はその取引に合格する必要がないことを知りました。 – Josh

関連する問題