有没有一种方法可以映射与关系中特定于列表中每个项目上的属性的多对多关系?我试图解决的实际案例是:nhibernate多对多关系特定属性
一个企业可能与许多联系人有关,并且联系人可能与许多企业有关。我想要做的是为关系提供状态,例如活动或删除以及联系人被邀请(或添加)成为该业务联系人的日期。所以说一个联系人可以为一个企业活跃,但等待另一个企业。
我知道我只需将关系作为实际的实体并将关联实体映射到集合即可轻松实现此目的,但我真的很讨厌这样做。它只是感觉肮脏,就像一个关系是一个实际的实体。我想知道的是,是否有办法将关系特定的属性映射到每个对象。所以,说我有一个企业的联系人列表。该列表中的每个联系人都有一个状态,但在映射中它会使该状态特定于该业务。我希望我可以做这样的事情,这将是业务映射:
<bag name="Contacts" table="BusinessContactAssociations" lazy="true" cascade="all">
<key column="BusinessID"/>
<many-to-many class="Contact" column="ContactID">
<join table="BusinessContactAssociations">
<key column="ContactID"/>
<property name="InvitedDate"/>
<property name="Status"/>
</join>
</many-to-many>
</bag>
当然,这是不行的,因为加入不能中使用的但多到很多,但它说明我想要的。
任何人都有我的任何方便的nhibernate映射魔术?
我最终这样做的方式,我真的不希望通过使该协会成为一个实体,然后在每一边使用一对一的方式,如上所述。如果我并不完全鄙视地图的使用,那么我可能会研究这个建议,但是当我拥有一组定义良好的属性时,使用字符串作为属性名称并不符合我的要求。 – Mitch 2009-12-08 16:30:59