我有一个Rotation类,其中包含对多个Advert对象列表的引用。我更喜欢Rotation具有类型属性的实现List<List<Advert>>来保存这些,但我无法提出支持这一点的 NHibernate 映射。
Rotation在数据库模式中,和之间的多对多关系Advert表示为RotationAdvert具有以下列的表:
RotationIDAdvertIDVariant(“水平位置”/外部列表中的索引)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?