0

私たちのプロジェクトは ASP.NET で実行されており、(ラムダ構文) で Entity Framework を使用しておりLINQ、同時にテーブルに挿入しないようにする必要があります。クラスを使用しようとしましReaderWriterLockたが、1 つのセッション (ブラウザーで複数のタブを開いた場合) でのみ機能しますが、複数のブラウザーでは機能しません。また、タイムスタンプを使用してテーブルを作成すること (問題を解決できるかどうかはわかりません) またはトランザクションを使用することについても読みましたが、Web アプリケーションでLINQ.

ASP.NET でこの排他的な書き込みアクセスを処理する方法を教えてください。

4

1 に答える 1

0

これ ReaderWriterLockSlimは良い選択かもしれませんが、任意のスレッド/プロセスが同じロックを共有できるようにする場合は、全体ReaderWriterLockSlimが静的メンバーである必要があります。

つまり、クラスは次のようになります。

public class Class1
{
     private readonly static ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
}

重要な注意点

アプリケーション レイヤー ロックを使用すると、独自のアプリケーション スレッドをロックして、一度にデータベースにアクセスするスレッドを 1 つに制限できます。ただし、他のアプリケーション (ASP.NET のアプリケーションや、IIS 上の別のアプリケーション プール内の別のアプリケーションではない) は、読み取りと書き込みのいずれかを実行して、データベースに並行してアクセスできる場合があります。

100% 効果的なソリューションが必要な場合は、データベース トランザクションを使用する必要があります。SQL Server が RDBMS の場合、Serializable分離レベルのトランザクションを使用できます。

揮発性データは読み取ることはできますが、変更することはできず、トランザクション中に新しいデータを追加することはできません。

詳しくはこちら。

于 2013-03-04T09:08:41.447 に答える