1

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 テーブルの可能性があります...

ありがとう

4

1 に答える 1

2

複数の外部キー列を忘れた場合は、これを<any>マッピングにすることができます。

于 2008-12-02T21:17:40.393 に答える