0

私は 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 つの変更を保存する方法を知りたいと思います。

ありがとう。

4

1 に答える 1