タグ付けされた質問 「transactionscope」

7
一部のマシンではTransactionScopeが自動的にMSDTCにエスカレートしますか?
このプロジェクトでは、TransactionScopeを使用して、データアクセスレイヤーがトランザクションでアクションを実行するようにします。エンドユーザーのマシンでMSDTCサービスを有効にする必要がないことを目指しています。 問題は、開発者のマシンの半分で、MSDTCを無効にして実行できることです。残りの半分は有効にする必要があります。そうしないと、「[サーバー]のMSDTCが利用できません」というエラーメッセージが表示されます。 それは本当に頭を悩ませる原因になり、ADO.NETトランザクションオブジェクトに基づく自作のTransactionScopeのようなソリューションにロールバックすることを真剣に検討するように私に促します。それは一見非常識だ-私たちの開発者の半分の作品は(とエスカレートしない)と同じコードし、他の開発者にエスカレートします。 トランザクションがDTCにエスカレートされる理由をトレースに適切に回答することを望んでいましたが、残念ながらそうではありません。 問題を引き起こすコードのサンプルは次のとおりです。エスカレートしようとするマシンでは、2番目の接続でエスカレートしようとします。 using (TransactionScope transactionScope = new TransactionScope() { using (SqlConnection connection = new SqlConnection(_ConStr)) { using (SqlCommand command = connection.CreateCommand()) { // prep the command connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { // use the reader connection.Close(); } } } // Do other stuff here that …

3
SqlConnectionは、どのような状況で自動的にアンビエントTransactionScopeトランザクションに参加しますか?
SqlConnectionがトランザクションに "参加"するとはどういう意味ですか?接続で実行するコマンドがトランザクションに参加するという意味ですか? その場合、どのような状況でSqlConnectionがアンビエントTransactionScope Transactionに自動的に登録されますか? コードのコメントで質問を参照してください。各質問の答えに対する私の推測は、括弧内の各質問の後に続きます。 シナリオ1:トランザクションスコープ内で接続を開く using (TransactionScope scope = new TransactionScope()) using (SqlConnection conn = ConnectToDB()) { // Q1: Is connection automatically enlisted in transaction? (Yes?) // // Q2: If I open (and run commands on) a second connection now, // with an identical connection string, // what, if …

3
TransactionScopeを非同期で動作するようにする/待つ
私たちのサービスバスにasync/ を統合しようとしawaitています。SingleThreadSynchronizationContextこの例に基づいてhttp://blogs.msdn.com/b/pfxteam/archive/2012/01/20/10259049.aspxを実装しました。 そして、それは一つのことを除いて、うまく働きます:TransactionScope。中の物を待つTransactionScopeと壊れますTransactionScope。 TransactionScopeasync/ awaitを使ってスレッドに物を保存するため、/ はうまく機能しないようですThreadStaticAttribute。私はこの例外を受け取ります: 「TransactionScopeが正しくネストされていません。」 TransactionScopeタスクをキューに入れる前にデータを保存し、実行する前に復元しようとしましたが、変更されていないようです。そしてTransactionScopeコードは混乱しているので、そこで何が起こっているのかを理解するのは本当に難しいです。 それを機能させる方法はありますか?に代わるものはありTransactionScopeますか?

2
TransactionScopeはどのようにトランザクションをロールバックしますか?
複数のオブジェクトをデータベースに挿入する統合テストを作成していて、メソッドがそれらのオブジェクトを取得するかどうかを確認しています。 データベースへの接続はNHibernateを介して行われます。そのようなテストを作成するための通常の方法は次のようにすることです。 NHibernateSession.BeginTransaction(); //use nhibernate to insert objects into database //retrieve objects via my method //verify actual objects returned are the same as those inserted NHibernateSession.RollbackTransaction(); しかし、最近この目的に使用できると思われるTransactionScopeについて最近知りました... 私が見つけたいくつかのサンプルコードは次のとおりです: public static int AddDepartmentWithEmployees(Department dept) { int res = 0; DepartmentAdapter deptAdapter = new DepartmentAdapter(); EmployeeAdapter empAdapter = new EmployeeAdapter(); using (TransactionScope …

1
Database.BeginTransactionとTransactions.TransactionScope
System.Transactions.TransactionScopeとEF6の違いは何Database.BeginTransactionですか? 誰かが小さな例を挙げたり、明確な違いがあるときにどちらを使用するかを説明したりできますか? PS:私のプロジェクトでは、EF6を使用しています。私はすでにドキュメントを読みましたが、あまり役に立ちませんでした。例も調べましたが、どちらかSqlConnection.BeginTransactionと言えば使用されており、MSはこれDatabase.BeginTransactionをEF6に導入しました。

10
トランザクションマネージャーは、リモート/ネットワークトランザクションのサポートを無効にしました
SQLServerとASP.NETを使用しています。私は次の機能を持っています: Using js = daoFactory.CreateJoinScope() Using tran = New Transactions.TransactionScope() '... tran.Complete() End Using End Using ただし、例外 'トランザクションマネージャは、リモート/ネットワークトランザクションのサポートを無効にしました。'がスローされます。 JoinScopeの説明: Public Class JoinScope Implements IJoinScope Implements IDisposable '... End Class 私は同じ環境の別のアプリケーションで問題なくこのように作業しましたが、ここでこの問題が発生します。問題を解決するにはどうすればよいですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.