非常に典型的な使用例である以下に取り組む方々には誰でも教えてください。データベースの変更を許可する
ユーザー1は、ユーザーの役割などを変更しているページ1を編集しています。 ユーザー2もユーザー1と同じユーザーを変更しています。 どのように変更が上書きされるのを防ぐのですか?
これは、フレームワーク3.5のasp.netサイト用ですか?
おかげ ニール
非常に典型的な使用例である以下に取り組む方々には誰でも教えてください。データベースの変更を許可する
ユーザー1は、ユーザーの役割などを変更しているページ1を編集しています。 ユーザー2もユーザー1と同じユーザーを変更しています。 どのように変更が上書きされるのを防ぐのですか?
これは、フレームワーク3.5のasp.netサイト用ですか?
おかげ ニール
楽観的同時実行は、多くの場合、ROWVERSION
(別名TIMESTAMP
SQLサーバーでの)データ型を使用して、ここでは非常に一般的です。ほとんどのORMはこれを自動的に処理します(ROWVERSION
/TIMESTAMP
の存在を検出します)。そうしないと、コード内でこれを処理する必要があります。
最も単純なレベル。編集のためにレコードをフェッチしたときにフェッチしたROWVERSION
を保持しておき、保存しようとするとチェックします。一致する場合、セーブはコミットされます。それ以外の場合は例外をスローします(2回目の編集は失われます)。
(代替方法として)更新中に各列をチェックすることに注意してください。これはより詳細ではありますが、よりコストがかかります(依存関係のあるいくつかのシナリオには完全には対応していません)。
すばらしいおかげだよ。 – Somedeveloper