0

NHibernate で以下をマッピングするにはどうすればよいですか?
私のエンティティと ERD は以下のとおりです。多対多の関係をマップする方法は知っていますが、結合テーブル ReportTargets を Datapoint テーブルにマップする方法がわかりません。ReportTargets エンティティ モデルは厳密にはドメイン エンティティではないため、存在しないことがわかります。ここでの最善の解決策は何ですか? 私はNHibernateの初心者なので、簡単にどうぞ..:)ありがとう

http://img341.imageshack.us/img341/3769/entities.gif

4

1 に答える 1

1

MarketReport.Targets には結合テーブルがあるため、多対多でマップします。

<class name="MarketReport">
  <id column="reportid" />
  <bag name="ReportTargets" table="reporttargets">
    <key column="marketreportid"/>
    <many-to-many column="targetid" class="Target"/>
  </bag>
</class>

<class name="Target">
  <id column="targetid" />
  <bag name="DataPoints" inverse="true">
    <key column="targetid"/>
    <one-to-many class="DataPoint"/>
  </bag>
</class>

<class name="DataPoint">
  <id column="datapointid" />
</class>

あなたの最新のコメントに基づいて、三項関連またはコンポーネント コレクションのいずれかが必要です。両方のマッピングを含めました。

<class name="MarketReport">
    <id column="reportid" />
    <map name="ReportTargets" table="reporttargets">
        <key column="marketreportid"/>
        <index-many-to-many column="targetid" class="Target"/>
        <many-to-many column="datapointid" class="DataPoint"/>
    </map>
</class>

<class name="MarketReport">
    <id column="reportid" />
    <bag name="ReportTargets" table="reporttargets">
        <key column="marketreportid"/>
        <composite-element class="ReportTarget">
            <many-to-one name="Target" column="targetid"/>
            <many-to-one name="DataPoint" column="datapointid"/>
        </composite-element>
    </bag>
</class>

<class name="Target">
    <id column="targetid" />
</class>

<class name="DataPoint">
    <id column="datapointid" />
</class>
于 2010-02-24T14:01:07.217 に答える