NHibernate/FluentNHibernate property bag -
एक वाहन वर्ग और वाहन प्रॉपर्टी वर्ग को देखते हुए ...
सार्वजनिक वर्ग वाहन {सार्वजनिक आभासी Int आईडी {get; संरक्षित सेट; } सार्वजनिक वर्चुअल स्ट्रिंग पंजीकरण {get; सेट; } निजी सूची & amp; लेफ्टिनेंट; VehicleProperty & gt; _प्रॉपर्टीज़ = नई सूची & amp;; वाहन वाहन & gt; (); सार्वजनिक आभासी IEnumerable & lt; VehicleProperty & gt; गुण ({वापसी _ प्रॉपर्टीज़ प्राप्त करें; } संरक्षित सेट {_properties = नई सूची & lt; VehicleProperty & gt; (मान);}} सार्वजनिक वर्चुअल शून्य AddProperty (स्ट्रिंग नाम, स्ट्रिंग मान) {_properties.Add (नया वाहन प्रॉपर्टी {नाम = नाम, मान = मान}); }} सार्वजनिक वर्ग VehicleProperty {सार्वजनिक वर्चुअल स्ट्रिंग नाम {get; सेट; } सार्वजनिक वर्चुअल स्ट्रिंग मान {get; सेट; }} मैं दो वर्गों को कैसे नक्शा कर सकता हूं ताकि वाहन प्रॉपर्टी तालिका में [वाहन आईडी] और [नाम] की एक समग्र कुंजी हो। वाहन एक कुल रूट होगा (वाहन प्रॉपर्टी को वाहन श्रेणी के बाहर तक नहीं पहुंचाया गया है)।
मैंने उन सभी चीजों की कोशिश की है जो मैं सोच सकता हूँ (मैं NHibernate के लिए नया हूँ ताकि इससे ज्यादा नहीं)
<पूर्व> सार्वजनिक वर्ग वाहनमाप: क्लासमाप और लेफ्टिनेंट; वाहन & gt; {सार्वजनिक वाहनमैप () {आईडी (x = & gt; x.Id); मानचित्र (x = & gt; x. पंजीकरण); HasMany (x = & gt; x.Properties)। उलटा () .Cascade.All (); }} सार्वजनिक वर्ग VehiclePropertyMap: ClassMap & lt; VehicleProperty & gt; {सार्वजनिक वाहनप्रॉपर्टीमैप () {UseCompositeId ()। केयप्रॉपर्टी (x = & gt; x.Name) के साथ। केरेफरेंस (x = & gt; x.Vehicle, "वाहन_आईडी"); मानचित्र (x = & gt; x.Name); मानचित्र (x = & gt; x.Value); }} निम्न मैकिंग परिणामों में नीचे एसक्यूएल और स्टेलस्टेट एक्सपैशन "अनपेक्षित पंक्ति संख्या: 0; अपेक्षित: 1" (मैं भी वास्तव में वाहन प्रॉपर्टी पर एक वाहन की संपत्ति नहीं करना चाहता हूं ) ...
INSERT "वाहन" (पंजीकरण) मूल्य (@ पी 0); Last_insert_rowid () चुनें; @ पी 0 = 'एए 0 9 सीडीई' अद्यतन "वाहन प्रॉपर्टी" एसईटी नाम = @ पी 0, मान = @ पी 1 कहां नाम = @ पी 2 और वाहन_आईडी = @ पी 3; @ पी 0 = 'रंग', @ पी 1 = 'ब्लैक', @ पी 2 = 'रंग', @ पी 3 = ''
- समग्र आईडी का उपयोग न करें।
- उलटा मतलब, यह एक दूसरे के उलटा संबंध है। अगर कोई दूसरा नहीं है, तो यह अभी अपडेट नहीं किया गया है।
- आपने वाहन प्रॉपर्टी नाम संपत्ति प्राथमिक कुंजी के रूप में घोषित की है। यदि प्राथमिक कुंजी पहले ही आरम्भ हो चुकी है, तो एनएच सोचता है कि यह पहले से ही संग्रहीत है और इसलिए अपडेट की कोशिश करता है (यही कारण है कि आपको अपवाद मिलता है।) आप इस व्यवहार को बदल सकते हैं, लेकिन कृत्रिम प्राथमिक कुंजी या मैपिंग बीयर का उपयोग करना बेहतर है।
मुझे आपको फ्लुनेट एन एचबरनेट पता नहीं है कोड। मैं आपको बता सकता हूं कि एक्सएमएल में ऐसा कैसे दिखता है।
& lt; वर्ग का नाम = "वाहन" & gt; & Lt; id name = "Id" जनरेटर = "मूल" / & gt; & Lt; संपत्ति नाम = "पंजीकरण" / & gt; & Lt;! - संपत्ति के लिए तालिका Vehicle_Properties घोषित गुण - & gt; & Lt; बैग नाम = "गुण" तालिका = "वाहनपोप्रर्टीज़" कैसकेड = "सभी-हटाए-अनाथ" & gt; & Lt;! - Vehicle_Properties और विदेशी कुंजी की प्राथमिक कुंजी - & gt; & Lt; प्रमुख स्तंभ = "वाहन_एफके" / & gt; & Lt;! - तालिका की सामग्री: नाम और मान - & gt; & Lt; संमिश्र-तत्व वर्ग = "वाहनप्रापति" & gt; & Lt; संपत्ति नाम = "नाम" / & gt; & Lt; संपत्ति का नाम = "मान" / & gt; & Lt; / समग्र तत्व & gt; & Lt; / बैग & gt; & Lt; / वर्ग & gt;
Comments
Post a Comment