Direk olarak eşleyemezsiniz.
- Daima
- NH iç içe koleksiyonları desteklemez koleksiyonları için arabirimleri (örn.
IList<T>
, IDictionary<K,V>
) kullanın: dikkat edilmesi gereken iki kural vardır. 'dan önce bunun için bir uygulama görmedim ve birisinin bunu istediğini duymadım.
bir sınıf ve kullanım arayüzleri içine dize listenizi koyun:
class StringList
{
IList<string> Strings { get; private set; }
}
class Entity
{
private IDictionary<string, StringList> stringDict;
}
Hatta böyle bir sınıf sahip olmanın bazı avantajları görebilirsiniz.
Haritalama:
<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>
Haritalar üç Tablolar:
- Tablo
Entity
- Tablo
Entity_StringDict
- Sütun
Entity_FK
- Sütun
Key
- Tablo
Entity_StringDict_Strings
Fantastik
Entity_StringDict_FK
Hmm Hata alıyorum: XML doğrulama hatası: 'urn: nhibernate-mapping-2.2' ad alanındaki 'bileşik öğe' öğesi, 'urn: nhibernate-mapping-2.2' ad alanında geçersiz alt öğe 'çanta' içeriyor . Beklenen olası elemanların listesi: 'urn: nhibernate-mapping-2.2' adında 'ebeveyn, özellik, bire-bir, iç içe-kompozit eleman'. Nhibernate 2.0.1 Kullanma .. – ulu
Ayrıca, dokümanlar "Bileşik elemanlar, bileşenler içerebilir, ancak koleksiyon içermez". – ulu