Webアプリの楽観的同時実行シナリオでは、GUIDに相当するタイムスタンプ列(sqlserver)を各テーブルに与えることを検討しています。エンティティへのLinqはWHERE id = @p0 AND timestamp = @p1
、Entity Frameworkの特定の属性でタイムスタンプ列を装飾する場合のように、SQL更新クエリを生成します。返される更新されたレコードの数がである場合、0
同時実行例外が検出されました。
多くの投稿で、私は自己追跡エンティティについて読んでいます。これは、代替またはより良い解決策になる可能性があります。しかし、上記の「単純な」タイムスタンプ方式に勝る利点は見当たりませんでした。データベースが不変であり、タイムスタンプ列を提供しないシナリオは別として。
どのソリューションが優れているのか、そしてその理由は何ですか?
編集
Yury Tarabankoは、STEは別の概念であると正しく述べています。ただし、zeeshanhiraniの回答は、同時実行性チェックが変更を追跡する主な動機の1つであることを示しています。
質問を言い換えると、「タイムスタンプ列」メソッドが非常に簡単に見える場合に、なぜ誰もが同時実行チェックにSTEの概念を使用するのでしょうか。