我是NHibernate的新手,在尝试为IDictionary建模时遇到了问题。
我的dicionary的关键是一个名为'Identifier'的复杂类型,相应的'value'是string类型,例如IDictionary<Identifier,string>.
(如果实体名称'Identifier'让这个令人困惑,它是一个域名术语而我继续使用它,我很抱歉:))
我的映射如下:
<map name="Identifiers" table="ShareClassIdentifier" lazy="false" >
<key>
<column name="ShareClassIdentifier_ShareClassId" />
</key>
<composite-index class="Identifier">
<key-property column="ShareClassIdentifier_IdentifierId" name="Id" />
</composite-index>
<element column="ShareClassIdentifier_Value" type="System.String" />
</map>
哪个工作正常,NHibernate创建我的字典并填充键的值。但是,我的标识符实体未被填充。创建了标识符实体,但缺少其所有属性(除了其ID)。
使用NHibernate Profiler,我可以看到NHibernate没有加入我的Identifier表,但我无法弄清楚如何在上面的映射中指定这个连接?
提前致谢
答案 0 :(得分:1)
您将Identifier
映射到那里,好像它只是一个属性(Id)的组件。
如果是实体,请将<composite-index>
元素替换为:
<map-key-many-to-many class="Identifier"
column="ShareClassIdentifier_IdentifierId"/>