2017-12-21 11 views
0

1つのテーブルのレコードに対して更新を実行する必要がありますが、この更新が許可されるかどうかは別のテーブルのレコードの値によって異なります。私は2つのエンティティをダウンロードしてチェックし、値を変更して保存することができます。EFでレコードを更新し、別のテーブルで同時実行チェックを使用する

これまでのところ、とても良いですが、確認と保存の間に「許可」レコードが変わらないことを確認する必要があります。基本的には、並行処理のようなものが必要ですが、変更されたレコードには必要ありません。

エンティティフレームワークの場合。可能であれば、プロシージャやSQLに切り替えない方がよいです。

私のシナリオ。

var db = new MyDb(); 
var allowingRecord = db.AllowingRecords.First(); 

if(allowingRecord.Allow) // allows to make changes in RecordsToChange 
{ 
    var recordToChange = db.RecordsToChange.First(); 
    recordToChange.FieldToChange = "Changing"; 
} 

// Somwhere right here allowingRecord.Allow changes to false, but entity is not updated 

db.SaveChanges(); 

答えて

0

あなたは、この目的のためにメメントデザインパターンをチェックすることもできます。その基本的にあなたの状態を格納し、あなたはそのパターンで常にそれを使用することができます 例えば、このリンクをチェックすることができますそれは同様にコード例があります。 http://www.dofactory.com/net/memento-design-pattern

関連する問題