Exception NHibernate“;“集合映射中的重复列”;例外
考虑以下NHibernate映射,并注意注释的属性。这些列与Exception NHibernate“;“集合映射中的重复列”;例外,exception,nhibernate,dictionary,mapping,Exception,Nhibernate,Dictionary,Mapping,考虑以下NHibernate映射,并注意注释的属性。这些列与映射中指定的键和索引列相同。当我删除注释(因此包括属性的TypeOfPart和UnitId列)时,我得到了“集合映射中的重复列”异常 <map name="Parts" table="ActiveUnitParts" lazy="false"> <key column="UnitId" /> <index column="TypeOfPart" type="integer"/> <c
映射中指定的键
和索引
列相同。当我删除注释(因此包括属性的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>
我在代码中需要的是一个字典
。但是我遇到的问题是,UnitId
和TypeOfPart
的属性值没有在ActiveUnitPart
实例中设置在dictionary
中
是,此单元的相关部分列表已加载,字典中的键与右侧部分相关。但是我不明白为什么我不能引用TypeOfPart
和UnitId
来填充ActiveUnitPart
本身的属性
我如何解决或解决这个问题
我为什么需要这个的动机:
我必须能够使用ActiveUnitPart
s,而无需参考相关的Unit
(UnitId
)
编辑1:
我知道我可以截取单元的部分属性的setter,并迭代字典来设置代码中的值,但这似乎是一种黑客行为
,如果可能的话,我希望学习一种更优雅的NHibernate
方法,只需将映射从列
更改为公式
。实现这一目标的最佳途径是:
<property name="TypeOfPart" formula="TypeOfPart" insert="false" update="false" />
<property name="UnitId" formula="UnitId" insert="false" update="false" />