0

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の回答が望ましいですが、流暢なマッピングは問題ありません

4

1 に答える 1

0

最終的に、この不必要な複雑さを取り除くために、別の設計を使用することにしました。

NHibernate の IDictionary サポートに関する Firo のポイントは良いものですが、おそらく解決策だったでしょう。

于 2012-10-19T00:04:04.330 に答える