2010-03-24 78 views
2

我是NHibernate的新手,遇到了试图建模IDictionary的问题。复合索引Nhibernate地图映射

我的dicionary的关键是一种称为'标识符'的复杂类型,相应的'值'是字符串的类型,例如IDictionary<Identifier,string>.

(道歉,如果实体名称“标识符”使这个混乱的,它是一个长期的域和我一起吧:)去)

我的映射如下:

<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没有加入我的标识符表,但我无法弄清楚如何在上述映射中指定这个连接?

在此先感谢

回答

1

您有映射Identifier好像是只有一个属性(Id)的一个组成部分。

<map-key-many-to-many class="Identifier" 
         column="ShareClassIdentifier_IdentifierId"/> 

如果它是一个实体,以取代<composite-index>元素