NHibernateを使用して、次のテーブル構造を以下の「ピボット」ドメインモデルにモデル化するために使用する最良の方法は何でしょうか?
マッピング属性は簡単です。それは本当に私が確信していないプロパティ/仮想列への行のピボットです。
データベース構造
属性テーブル
Id Name Type
Attr1 Some Attribute 1 Bool
Attr2 Some Attribute 2 Bool
Attr3 Some Attribute 3 Bool
広告テーブル
Id Name
Ad1 Some ad 1
AdAttributesテーブル
Id AdId AttributeId Value
100 Ad1 Attr1 true
101 Ad1 Attr2 false
102 Ad1 Attr3 true
必要なNHibernateオブジェクトモデル
class Attribute{
public int Id {get;set;}
public Type TheType {get;set;}
public string Name {get;set;}
}
class AdAttribute{
public int Id{get;set;}
public Ad Ad{get;set;}
public Attribute Attribute{get;set;}
public bool Value{get;set;}
}
class Ad{
...
class Attributes{
public AdAttribute Attr1{get;set;}
public AdAttribute Attr2{get;set;}
public AdAttribute Attr3{get;set;}
}
Attributes TheAttributes{get; protected set;}
}
テーブル構造は明確に設定されていませんが、目標は属性が広告の列として保存されないようにすることです。広告タイプが異なれば属性も異なりますが、動的に変化することはありません。つまり、広告タイプ1には常に10個の属性があり、広告タイプ2には常に5個の属性があります。
生のNHibernateHBMの回答が望ましいですが、流暢なマッピングは問題ありません