mapping 'value object' collection in (Fluent) NHibernate -


मेरे पास निम्न इकाई है

  सार्वजनिक वर्ग कर्मचारी {सार्वजनिक वर्चुअल इन्ट आईडी (get; सेट;} सार्वजनिक आभासी ISet & lt; Hour & gt; XboxBreakHours {get; set} सार्वजनिक आभासी ISet & lt; Hour & gt; कॉफ़ीब्रेकहोर्स {प्राप्त; सेट}} पब्लिक डेड टाइम टाइम {प्राप्त करें; सेट;}}  

(मैं यहाँ क्या करना चाहता हूँ वह दुकान है जो कर्मचारी ए नाटकों Xbox रोज़ाना कहते हैं 9:00 13:30 पर और हर रोज 7:00 12:30 18:00 पर एक कॉफी ब्रेक होता है) - मुझे यकीन नहीं है कि मेरा दृष्टिकोण यहां बिल्कुल मान्य है।

सवाल यह है कि कैसे मेरे (आदर्श धाराप्रवाह) मैपिंग यहाँ की तरह दिखते हैं? घंटे वर्ग के लिए आईडी या किसी प्रकार के रिपोजिटरी से सुलभ होने के लिए यह आवश्यक नहीं है (मेरी दृष्टि से)।

आप इसे कैसे करना चाहते हैं इसके आधार पर, आपको या तो अपने संग्रह को एक तत्व मैपिंग के रूप में या एक घटक संग्रह (जो कि & lt; element & gt; और & lt; composite -नियम & gt; NHibernate शर्तों में) पूर्व में IUserType को परिभाषित करने की आवश्यकता होगी, जबकि बाद के लिए है यदि आप अपना hour वर्ग के पास एक से अधिक संपत्ति हैं।

यदि आप एक संपत्ति के साथ चिपके हुए हैं, तो आपको एक IUserType को परिभाषित करने की आवश्यकता होगी, इसलिए NHibernate जानता है कि अपने प्रकार के और अपने डेटाबेस से अनुवाद करने के तरीके एक बार जब आप यह कर लेंगे, तो आप इसे फ़्लुएंट एनआईबीनेट के साथ मैप कर सकते हैं:

  HasMany (x = & gt; x.XboxBreakHours)। एलिमेंट ("value", x = & gt; x CustomType & LT; YourUserType & gt;);  

यह निर्दिष्ट करता है कि आपका संग्रह तालिका में value नामक कॉलम के साथ वास्तविक मानों को संग्रहीत किया जाता है। CustomType कॉल NHibernate को इस संग्रह के लिए IUserType का उपयोग करने के लिए कहता है।

यदि आप अपने में एकाधिक गुण हैं, घंटा वर्ग, तो आपको निम्न करने की आवश्यकता है (ध्यान दें: यह वास्तव में घटक मानचित्रण करने के समान है)।

  HasMany (x = & Gt; x.XboxBreakHours)। घटक (COMP = & gt; {COMP.Map (x = & gt; x.Time)) comp.Map (x = & gt; x.एएनए);});  

Comments