Web サイトのユーザーが行ったアクションを保存することを目的とした Events テーブルがあります。アクションは基本的に、テーブル X の新しい行を変更または作成します。これにより、ユーザーが実行したすべてのアクションの履歴を保存できます。そのため、イベントには以下が含まれます。
- 主キー列
- イベントを説明するテキスト (例: 「コメントを投稿しました」)
- 必要に応じて識別子列
- 別のテーブル A への外部キー列
- 別のテーブル B への外部キー列
- ....
- 別のテーブル N への外部キー列
Events テーブルの行には、外部キー列が 1 つだけ設定され、その他はすべて null になります (したがって、すべて null 可能です)。テーブルは、イベントに関連する実際のテーブルに対する間接テーブルのように動作します。すべての情報が外部キー列に含まれているため、識別子が必要かどうかはわかりません。テーブル A ~ N は何でもかまいません。それらのドメイン モデル クラスは、必要に応じて共通のインターフェイスを持つことができます (IEventRecordable)。
私の質問は次のとおりです: Events テーブルと Event クラスの間でマッピングは可能ですか? 流暢なnhibernateで特に実現可能ですか? Event の派生クラスを多数作成せずに実行できますか (空のサブクラスを多数作成したくありません)。Event クラスは、理想的には次のようになります。
public class Event
{
public virtual int Id { get; set; }
public virtual IEventRecordable ActualEvent { get; set; }
public virtual string EventDescription { get; set; }
DateTime EventDateTime { get; set; }
}
ドメイン モデル クラスの多くのクラスは、IEventRecordable (主に空のインターフェイス) を実装できます。User テーブルまたは BlogComment テーブルの可能性があります...
ありがとう