エンティティごとに履歴テーブルを作成します。既存のエンティティを前提として、エンティティフレームワークに履歴エンティティ/テーブルを自動的に作成させる方法はありますか?
たとえば、Customer
エンティティには、と呼ばれるシャドウ履歴テーブルがありますCustomerHistory
。編集または削除があるたびに、古いレコードが履歴テーブルに挿入されます。メインエンティティテーブルには、常に現在のレコードが含まれます。
複数のエンティティがあるため、エンティティごとに個別の履歴エンティティとリポジトリを作成する必要はなく、エンティティが2倍になります。
エンティティのトランザクションおよび状態の時間的変化を追跡するために、すべてのエンティティに対してこれを実行したいと思います。
作業単位とリポジトリパターンを使用します。
エンティティとオブジェクトのプロパティは同じであると想定しますがEntityHistory
、いくつかの日時プロパティを使用して履歴オブジェクトを拡張したい場合があります。
履歴/監査テーブルに書き込むためにオーバーライドDbContext.SaveChanges
する方法を理解しています。
私が避けたいのは、私たちが持っているすべてのエンティティに対して重複する履歴エンティティ/リポジトリを作成する必要があることです。
私は現在OnModelCreating
、各エンティティの履歴エンティティを作成するために何かを行うことを検討していますが、良い例は見つかりませんでした。
何か案は?