考虑以下 NHibernate 映射,并注意注释属性。key
这些列与 中指定的和index
列相同map
。当我删除评论(因此包括属性的TypeOfPart
和UnitId
列)时,我得到“集合映射中的重复列”异常。
<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>
. 但我遇到的问题是属性的值UnitId
并TypeOfPart
没有ActiveUnitPart
在Dictinonary<TypeOfpart, ActiveUnitPart>
.
是的,这个单元的相关部分列表已加载,是的,字典中的键与正确的部分相关。但我不明白为什么我不能引用TypeOfPart
andUnitId
来填充属性ActiveUnitPart
本身。
我该如何解决或解决这个问题?
我为什么需要这个的动机:我必须能够在ActiveUnitPart
不引用相关的Unit
( UnitId
)的情况下使用 s
编辑 1:
我知道我可以拦截 的Parts
属性的设置器Unit
并遍历Dictinonary<TypeOfpart, ActiveUnitPart>
以设置代码中的值,但这似乎是一个 hack
并且我希望学习一种更优雅NHibernate
的方式来完成它,如果可能的话。