2011-12-07 13 views
1

私のプロジェクトでは、dbmlを使用してlinq to sqlのデータベースにアクセスします。必要ないくつかの操作でトランザクションを使用します。TransactionScopeを既定でUncommitedに設定する方法

データベースは、私は次のエラーに直面して成長しているとおり:

  1. タイムアウト期限切れ。操作が完了する前にタイムアウト時間が経過したか、サーバーが応答していません。

  2. トランザクション(プロセスID 82)がデッドロックされましたロックオン|他のプロセスとの通信バッファリソースがデッドロックの犠牲者として選択されました。トランザクションを再実行

プロジェクトには何千ものlinqクエリが広がっています。したがって、時間がかかるので、すべての選択クエリにTransactionSopeコードを入力することはできません。

dbmlにデフォルトのトランザクションIsolationLevelを設定して、コミットされていない状態でデッドロック状態にならないようにする方法はありますか?

問題についてご不明な点がありましたらお知らせください。クエリの実行が動作するはずの前に呼び出し後

+0

Flammethrowerを使ってフライを殺すように聞こえるかもしれませんが、うまくいくかもしれませんが、デッドロックを緩和することはできません(デッドロックが 'INSERT'/'UPDATE' /' DELETE'ステートメント)。 –

+0

linqでトランザクションを使用する方法はありますか?私たちが "NoLock With"をSQLの文章で使うようなものです。 ? –

答えて

0

..

dataContext.ExecuteCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED") 
あなたはかつてのようにトランザクション分離レベルを設定するためのDataContext ExecuteCommandを一度呼び出し、拡張メソッドを実装したDataContext OR

を初期化した後、これを実行することができ

実際のコマンド実行のために一度上書きします。

関連する問題