我有一个Rotation
类,其中包含对多个Advert
对象列表的引用。我更喜欢Rotation
具有类型属性的实现List<List<Advert>>
来保存这些,但我无法提出支持这一点的 NHibernate 映射。
Rotation
在数据库模式中,和之间的多对多关系Advert
表示为RotationAdvert
具有以下列的表:
RotationID
AdvertID
Variant
(“水平位置”/外部列表中的索引)Position
(“垂直位置”/内部列表中的索引)
我找到的最好的解决方案是实现固定数量的List<Advert>
类型化属性,并使用每个元素Rotation
扩展映射:<list>
<list name="Variant1" table="RotationAdvert" where="Variant = 1">
<key column="RotationID"/>
<index column="Position"/>
<many-to-many class="Advert" column="AdvertID"/>
</list>
<list name="Variant2" table="RotationAdvert" where="Variant = 2">
<key column="RotationID"/>
<index column="Position"/>
<many-to-many class="Advert" column="AdvertID"/>
</list>
etc...
但是,这需要我指定固定数量的变体,而我真的很想避免这种情况。
我还有哪些其他选择?我可以将一个RotationVariant
类压缩到模型中 - 而不在数据库中创建新表 - 并以某种方式映射一个List<RotationVariant>
属性Rotation
吗?还是我必须在数据库中创建一个新表,只为每个表保存一个 ID RotationVariant
?