2009-08-20 28 views

cevap

7

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
    • Sütun String
+0

Fantastik Entity_StringDict_FK

  • Kolon, ben bir deneyin vereceğiz! – ulu

  • +1

    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

    +0

    Ayrıca, dokümanlar "Bileşik elemanlar, bileşenler içerebilir, ancak koleksiyon içermez". – ulu