如何通过映射一个一对多的关系连接表?
-
22-09-2019 - |
题
我将如何去映射在NHibernate的下面?点击 我的实体和ERD如下。我知道如何映射一个多对多的关系,但不知道如何加盟表ReportTargets映射到数据点表。你会发现,没有ReportTargets实体模型,因为它不是严格意义上的域实体。什么是最好的解决方案?我是一个新手,NHibernate的,所以还是容易请.. :)谢谢
解决方案
作为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>
不隶属于 StackOverflow