いくつかの要件を持つデータモデルがあります。私は、EFを使用している間、これらの要件をできるだけ透明にする方法を見つけたいと思います。Entity Frameworkのオーバーライド動作
最初に、モデルはソフト削除をサポートする必要があります。私はこれについていくつかの質問を見てきましたが、私はそれが比較的単純であると思います。
第2に、「挿入のみ」のポリシーがあります。それは更新を意味しません。更新が行われると、代わりに新しいエントリを挿入する必要があります。私はこの操作を更新として扱い、そのフレームワークで背後のインサートに変更させたいと考えています。
第3に、照会するときに#2があるため、ID列を降順で並べ替えて最初のレコードのみを返す必要があります。多くのレコードを返すクエリを実行する場合でも。基本的に、これはバージョン履歴を作成します。
第4に、各クエリでこのロジックを実装する必要はありません。私たちが各クエリを通常のCRUD型のトランザクションであるかのように扱うことができるように、フレームワークがそれを行うのはいいことです。
EFでこのようなデータモデルを実装した人はいますか?どんなテクニックを使いましたか?
これはビューやSprocsで行うことができますが、ビューを使用する場合は、すべてのリレーションシップを手動で維持する必要があります(EFはビューを通してリレーションシップを読み取ることができません)。トリガーも可能ですが、私たちのDBAは可能な限りトリガーを欲しがらず、達成に長時間かかるすべてのトリガーについて非常に広範なレビューポリシーを持っています。もし私がする必要がなければ、私はむしろトリガーを使用しないだろう。
私は主にデータベースの第1のアプローチで作業しますが、私はdbcontextを使用します。
EDIT:
以下ラディスラフのコメントを考えると、私はまた、これらの要求を処理することができるかもしれない他のORMのについてのコメントに興味があると思います。
#4では、これを特定のエンティティに実装したいと思うようですが、常にクエリごとに行うのではないでしょうか?だから、エンティティクラスの設定可能なプロパティにする必要がありますか? –
@GertArnold - 私はあなたの質問を理解していません。エンティティはPOCOであるため、それらを満たすために使用されるクエリのロジックを制御しません。 –
いくつかのクラスに定期的な更新と監査された「挿入のみ」の更新(どこにでも設定可能)を追加したいと思っていました。おそらくそうではありません。 –