考慮以下NHibernate映射,並注意註釋的屬性。這些列與map
中指定的key
和index
列相同。當我刪除註釋(因此包括屬性的TypeOfPart
和UnitId
列)時,我得到「重複列映射收集」異常。NHibernate「重複列映射收集」異常
<map name="Parts" table="ActiveUnitParts" lazy="false">
<key column="UnitId" />
<index column="TypeOfPart" type="integer"/>
<composite-element class="ActiveUnitPart">
<property name="Id" />
<property name="CreationDate" />
<property name="PartInfo"/>
<property name="Remarks"/>
<!-- <property name="TypeOfPart" /> -->
<!-- <property name="UnitId" /> -->
</composite-element>
</map>
我需要的代碼是Dictinonary<TypeOfpart, ActiveUnitPart>
。但是我遇到的問題是Dictinonary<TypeOfpart, ActiveUnitPart>
中的ActiveUnitPart
實例中未設置屬性UnitId
和TypeOfPart
的值。
是的,這個單元的相關部分的列表被加載,並且是字典中的鍵與右部分相關。但我不明白爲什麼我不能引用TypeOfPart
和UnitId
來填充ActiveUnitPart
本身的屬性。
我該如何解決或解決方法?
爲什麼我需要這個動機: 我必須能夠與ActiveUnitPart
s到工作,而無需引用相關Unit
(UnitId
)
編輯1: 我知道我可以攔截Parts
setter方法的Unit
並遍歷Dictinonary<TypeOfpart, ActiveUnitPart>
來設置代碼中的值,但它看起來像是hack
,我希望學習更優雅的NHibernate
完成它的方法,如果可能的話。