私は EF 4.0 を使用しており、このテーブルの同時実行を制御したいので、タイムスタンプ フィールドを持つテーブルをデータベースに持っています。
次に、edmx を作成し、テンプレート DBContext を使用して POCO クラスを生成しました。
最初に行うのは、edmx のタイムスタンプ フィールドで、保存された生成パターンを none に設定することです。次に、私のコードで次のことを行います。
myContext.MyTable.Attach(myEntity);
myContext.Entry<MyTable>(myEntity).Property(p => p.AnyFieldNoTimestamp).IsModified = true;
myContext.SaveChanges();
これにより、タイムスタンプ列を更新できないという例外が発生します。
フィールドを変更するようにマークしただけで、このフィールドがタイムスタンプではない場合、なぜこのエラーが発生するのですか?
次に、edmx に適切に保存された生成パターンを Indentity に設定しようとします。
実際には、トランザクションと 2 つの saveChanges があります。この 2 回目の試行では、最初の savechanges でエラーは発生しませんが、2 回目の savechanges では例外 0 行が影響を受けます。これは、エンティティのタイムスタンプが最初の savechanges から 2 番目に変更されたように見えるため、同時実行制御でこの例外が発生します。
そのため、トランザクション内でタイムスタンプ フィールドを使用する方法と、2 つの変更を保存する方法を知りたいと思います。
ありがとう。