2010-03-24 75 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>元素