私はC#、EF、SQL Serverを使用しており、親子関係のあるテーブルはほとんどありません。 2つ以上ありますが、この例では簡単に2つだけを使用します。定義済みの行バージョンのエンティティフレームワークの更新
表帳
Id
DateModified
RowVersion
表ページ
Id
BookId - this is foreign key to Book.Id
RowVersion
任意のページ/ページは、私はブックのテーブルにDateModified
を更新する必要がアップデートされているとき。
それは私が常に単に
SELECT * FROM Page
WHERE RowVersion > Book.RowVersion
ような何かをすることによってしかし、これを行うために各書籍の最新の変更を取得できるようにするユニークな値だから私たちは、変化を追跡するためにRowVersion
を使用していますRowVersions
の前にBook
テーブルのRowVersion
が常にPages
に更新されていることを確認する必要があります。私は現在、このような何か持っている私のEDM層で
:
class Page
{
void OnPageChanged() //this is hooked to OnPropertyChanged
{
this.Book.UpdateDateModified(DataTime.Now);
}
}
はこれを行うには、最初に更新され、トランザクションがコミットした後にそのRowVersionがあまりにも最初に更新されているページになります。それは私が必要なものではありません。
質問OnPageChanged()
の代わりにOnPropertyChanging
イベントを処理すると、これが一貫性を保証しますか?それはOnPropertyChanged
で、EFによって生成されたSQLで更新が行われる順序が決まりますか?この場合の他の提案はありますか?
私は 'binary'を 'bigint'に変換する計算カラムを持っています。比較は問題ではありません。注文に関しては、私もそれに頼らない方に傾いています。だから私はこのアプローチを無駄だと考えています。ありがとう – Paul