1

テーブルの行の変更でEF4.1以降の論理行レベルの楽観的ロックを処理するための最良の方法/良い方法についてのフィードバックを得たいと思っていました。

異なるフィールドが変更されている限り、これは同時変更を許可するように見えるので、標準のconcurrency=fixedがフィールドにあるのは好きではありません。レコードの整合性により、すべてのフィールドをセットと見なす必要がある場合、人々は何をしますか?すべてのフィールドに同時実行モードを設定し、「更新設定」も行います。この問題からどのようなパターンが浮かび上がりますか?

本当に私がやりたいのは、同時実行に使用するフィールド、たとえばInt32を用意することです。その間にインクリメントされた場合は、更新に失敗します。つまり、多くのフィールドではなく、同時実行を担当するフィールドです。私はそれを手動で行っていました。更新のたびに、設定しているデータを変更するときにconc = concがチェックされ、conc = conc+1もあります。

EFを使用して、これを同時実行フィールドにし、FIXEDとしてマークし、常にx = x + 1として更新すると、EFが残りを実行します。

行レベルの概念に対処するためにEFGURUはどのようなアプローチを取っていますか。

いくつかの投稿は近くにありますが、静かに質問に対処しないでください。

または、多層防御に関する驚くべき詳細に進みます。ビュー/spsなどですべてのことを行います。

EFには、行レベルのアプローチに対応する単純なパターンがあることを期待していました。

モデルファーストアプローチでのタイムスタンプ属性を使用したEF 同時実行処理

EntityFrameworkを使用した行レベルのセキュリティ http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/handling-concurrency-with-the-entity-framework-in-an-asp- モデルファーストアプローチでのタイムスタンプ属性を使用したnet-mvc-applicationEF同時処理

4

1 に答える 1

1

timestampまたはデータ型を使用してテーブルに特別な列を作成するだけですrowversion(これらの名前はSQL Server用であり、他のデータベースでは異なる場合があります)。このタイプはまさに魔法をかけます。行が更新されると、列の値が変更されます。この列を。でマークするだけですConcurrencyMode.Fixed

于 2012-08-18T07:56:32.360 に答える