2009-08-20 18 views
8

मेरी कक्षा में Dictionary<string, List<string>> प्रकार का क्षेत्र है। NHibernate के साथ इसे मैप करने का सबसे अच्छा तरीका क्या है? मैं इसे एक क्षेत्र के रूप में बेहतर छोड़ दूंगा, इसे बेनकाब नहीं करना चाहता हूं।NHibernate: सूचियों का एक शब्दकोश मैपिंग

बहुत बहुत धन्यवाद!

ulu

उत्तर

7

आप इसे सीधे मानचित्र नहीं कर सकते।

  • हमेशा संग्रह के लिए इंटरफेस (। जैसे 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
+0

बढ़िया, मैं इसे एक कोशिश दे देंगे! – ulu

+1

हम्म मुझे एक त्रुटि मिल रही है: एक्सएमएल सत्यापन त्रुटि: नेमस्पेस 'urn: nhibernate-mapping-2.2' में तत्व 'composite-element' नामस्थान 'urn: nhibernate-mapping-2.2' में अमान्य बाल तत्व 'बैग' है । अपेक्षित संभावित तत्वों की सूची: नामस्थान 'urn: nhibernate-mapping-2.2' में 'माता-पिता, संपत्ति, कई से एक, नेस्टेड-कंपोजिट-एलिमेंट'। निबर्ननेट 2.0.1 का उपयोग करना .. – ulu

+0

इसके अलावा, दस्तावेज़ कहते हैं, "समग्र तत्वों में घटक हो सकते हैं लेकिन संग्रह नहीं हो सकते हैं"। – ulu

संबंधित मुद्दे