8
我的班級有一個Dictionary<string, List<string>>
類型的字段。用NHibernate映射它的最佳方式是什麼?我最好把它當作一個領域,不要公開它。NHibernate:映射列表字典
非常感謝!
ulu
我的班級有一個Dictionary<string, List<string>>
類型的字段。用NHibernate映射它的最佳方式是什麼?我最好把它當作一個領域,不要公開它。NHibernate:映射列表字典
非常感謝!
ulu
您不能直接映射它。有兩個規則來考慮:
IList<T>
,IDictionary<K,V>
)接口把你的字符串列表插入一個類,並使用接口:
class StringList
{
IList<string> Strings { get; private set; }
}
class Entity
{
private IDictionary<string, StringList> stringDict;
}
你甚至可能看到有這樣一類的一些優點。
映射:
<class name="Entity">
...
<map name="stringDict" table="Entity_StringDict" access="field">
<key column="Entity_FK"/>
<index column="Key" type="System.String"/>
<composite-element class="StringList">
<bag name="Strings" table="Entity_StringDict_Strings">
<key column="Entity_StringDict_FK"/>
<element type="System.String" column="String"/>
</bag>
</composite-element>
</map>
</class>
映射到三個表:
Entity
Entity_StringDict
Entity_FK
Key
Entity_StringDict_Strings
Entity_StringDict_FK
String
好極了,我給它一試! – ulu 2009-08-20 20:41:35
嗯我收到一個錯誤: XML驗證錯誤:命名空間'urn:nhibernate-mapping-2.2'中的元素'composite-element'在命名空間'urn:nhibernate-mapping-2.2'中有無效的子元素'bag' 。預期的可能元素列表:'名稱空間'urn:nhibernate-mapping-2.2'中的'parent,property,many-to-one,nested-composite-element'。 使用Nhibernate 2.0.1 .. – ulu 2009-08-21 17:16:07
此外,文檔說,「複合元素可能包含組件,但不包含集合」。 – ulu 2009-08-21 18:29:48