2010-04-15 16 views
5

में अनुक्रमित संग्रह के साथ बिडरेक्शनल एक से कई संगठन पिछले गर्मियों में, मैंने how to add new object to an IList mapped as a one-to-many with NHibernate से संबंधित एक प्रश्न पूछा। जवाब में से एक ने मुझे documentation में इस पैरा को करते हैं:NHibernate

कृपया ध्यान दें कि NHibernate एक अनुक्रमित संग्रह के साथ द्विदिश एक-से-कई संगठनों का समर्थन नहीं करता (सूची, नक्शा या सरणी) "कई" अंत के रूप में , आपको एक सेट या बैग मैपिंग का उपयोग करना होगा।

जब मैं यकीन है कि मैं समझता हूँ क्या इस पैरा का कहना है, मुझे पता नहीं क्यों या कैसे इस सीमा के आसपास काम करने के लिए है। अब मैं फिर से एक मॉडल है कि एक "एक सूचकांक संग्रह के साथ द्विदिश एक-से-कई संघ" की आवश्यकता के लिए लगता है के साथ काम कर रहा हूँ के रूप में, मैं लगा समय अनुवर्ती प्रश्न के लिए सही था:

  1. NHibernate क्यों एसोसिएशन पर यह सीमा है? यह मेरी धारणा है कि NHibernate के पीछे लोग काफी चालाक हैं, इसलिए मुझे लगता है कि एक बहुत अच्छा कारण है।

  2. इस कमी के लिए आम कामकाज क्या हैं? संग्रह को एक गैर-अनुक्रमित बैग बनाना और बच्चे वर्ग में एक स्पष्ट Position संपत्ति जोड़ना? कोई बेहतर समाधान?

उत्तर

5

यह 4 महीने पहले पूछा गया था, तो आप कर रहे हैं मैं नहीं जानता कि अभी भी रुचि :-)

द्विदिश अनुक्रमित संघों का समर्थन नहीं करने के लिए वैचारिक वजह साफ है: सूचकांक केवल समझ में आता है एक दिशा में।

उदाहरण के लिए, IList<Line> के Lines संपत्ति के साथ एक Invoice वर्ग पर विचार करें।

line.Invoice = anInvoice सेट करना कोई समझ नहीं आता है, क्योंकि यह निर्धारित करना असंभव है कि सूची सूचकांक क्या होना चाहिए।

ध्यान रखें कि NHibernate "देखता है" दो अलग अलग संबंधों के रूप में द्विदिश रिश्ते (इसलिए inverse="true" तरफ के लिए की जरूरत नहीं इसे बनाए रखने के आरोप में)

वैकल्पिक हल आप वास्तव में क्या सुझाव दिया है: एक स्थान/सूचकांक/आदि बच्चे वर्ग में संपत्ति।