2010-01-22 10 views
12

हालांकि यह एक व्यक्तिपरक प्रश्न है, एक नए एनएचबीर्नेट उपयोगकर्ता के रूप में, मैं उत्सुक हूं कि क्यों फ्लुएंट बनाम पारंपरिक एक्सएमएल मैपिंग का चयन करेगा।Fluent NHibernate बनाम एचबीएम एक्सएमएल फाइलें क्यों?

मेरे दृष्टिकोण से, जब मैंने पहली बार एनएचबर्ननेट के साथ काम किया, तो मैंने फ्लुएंट इंटरफ़ेस का उपयोग किया, लेकिन कुछ रोडब्लॉक में भाग गया और 'खिलौना ऐप' से परे किसी भी चीज़ के लिए फ्लुएंट इंटरफेस के लिए पर्याप्त दस्तावेज खोजने में कठिनाई हुई, इसलिए मैंने सीखा एक्सएमएल के माध्यम से इन्हें संभालने के लिए।

समय के साथ, मुझे एहसास हुआ कि मैं एक्सएमएल पक्ष पर अपने अधिकतर कार्य किया था, और महसूस किया कि यह के रूप में भीषण रूप मैंने सोचा कि यह होगा नहीं था। तो मेरे लिए व्यक्तिगत रूप से, यह खराब दस्तावेज का मामला था और कोडिंग समय में महत्वपूर्ण बचत नहीं देख रहा था।

कहा जा रहा है कि, मुझे कुछ बड़ा लाभ/हानि हो सकती है जो मुझे याद आ रही है, और मैं वास्तव में उन लोगों से कुछ राय सुनना चाहूंगा जिनके पास इन उपकरणों के साथ काम करने में अधिक अनुभव है।

उत्तर

16

संकलन समय सुरक्षा और पुनर्रचना (नाम बदलने कक्षाएं, गुण) लाभ आप धाराप्रवाह मैपिंग से प्राप्त कर रहे हैं। मैपिंग, प्रोग्राम कोड और डेटा एक्सेस लिखने के लिए एक भाषा (सी # या वीबी.नेट) का उपयोग करना एक और लाभ है।

+0

मुझे वास्तव में उस पर एक सवाल है। मुझे याद है कि अगर मेरी मैपिंग फ़ाइल बंद थी तो फ्लुएंट एक अच्छा संकलन त्रुटि फेंक देगा - लेकिन अगर मैं टेबल कॉलम को गलत टाइप करता हूं तो क्या इससे मदद मिलेगी, या अगर मैं अपना एचबीएम एक्सएमएल उड़ाता हूं तो अपवाद को डीबग कर दूंगा? उत्तर बीटीडब्ल्यू के लिए धन्यवाद! –

+0

यदि आप टेबल नाम या कॉलम को गलत टाइप करते हैं तो आपको सहेजने के लिए कुछ भी नहीं है। –

6
  • संकलन समय नाम- और प्रकार-सुरक्षा
  • IntelliSense आप को दिखाने के लिए जो धाराप्रवाह तरीकों
  • Automapper
+0

आपको एक्सएमएल में इंटेलिसेन्स के साथ-साथ एनएचबेर्नेट एक्सएसडी स्कीमा भी मिलता है। –

+0

आपको हाइबरनेट स्कीमा के आधार पर इंटेलिसेन्स मिलता है, लेकिन यह आपके ऑब्जेक्ट मॉडल पर आधारित नहीं है। ऑटोमैपिंग के लिए – yfeldblum

+1

+1, जो आईएमओ एकमात्र वास्तविक "स्लैम डंक" है। अन्य लाभ अच्छे हैं, लेकिन दिमाग में नहीं। – Aaronaught

0

किसी भी बिंदु पर उपलब्ध हैं

  • अनुकूलन चूक खुला का एक बहुत की तरह सोर्स सॉफ़्टवेयर, यह लाइब्रेरी जनता के लिए उपलब्ध थी इससे पहले कि कई सुविधाएं उत्पादन तैयार थीं। FluentNhib के किस संस्करण के साथ आप काम कर रहे थे, इस पर निर्भर करते हुए, कुछ सुविधाएं बिल्कुल लागू नहीं हो सकती हैं। उदाहरण के लिए, जब मैंने पहली बार इसके साथ काम करना शुरू किया, तो समग्र कुंजी अभी तक कार्यान्वित नहीं की गई थी और ब्लॉक को ठोकरने के बाद मुझे ठोकरें मिलीं।

    लेकिन उत्पाद काफी बढ़िया टूल में विकसित हुआ है। यह एक्सएमएल की तुलना में सुंदर फीचर है और दूसरों ने पहले से ही उल्लिखित सभी लाभ प्रदान किए हैं।

  • 3

    मेरे लिए, सुविज्ञ में बड़ी सुविधा Automapper है।

    मैं कैसे वे एक संबंधपरक डेटाबेस में तालिकाओं के लिए मैप किया जाएगा की बुरा विवरण के बारे में चिंता किए बिना POCO वर्गों का उपयोग अपने डोमेन के मॉडल को परिभाषित कर सकते, (अधिकतर)।

    एक लंबे समय OO डेवलपर, और कभी कभी डीबी डेवलपर के रूप में, मैं और अधिक आरामदायक एक OO फैशन में डिजाइन कर रहा हूँ। मुझे यह भी विश्वास है कि यह मुझे एक उच्च, अधिक शक्तिशाली स्तर पर काम करने की अनुमति देता है।

    ऑटोमैपिंग डोमेन मॉडल में भी बहुत कम चुनौतीपूर्ण परिवर्तन करता है।

    आपके ग्राहक सिर्फ अंतिम समय वे डेटाबेस के लिए चार नए स्तंभ जोड़ना चाहते हैं पर आपको बता चुका हूँ?

    कोई समस्या नहीं - संबंधित पीओसीओ (कोड की 4 लाइनें), और रीमेप में चार नई गुण जोड़ें।

    निरंतर बदलती आवश्यकताओं से बहुत अधिक दर्द लेता है जो कई परियोजनाओं पर जीवन का एक तथ्य है।

    2

    मैं एक कारण यह है कि कस्टम एक आम कोड बेस के आधार पर कार्यक्षमता बनाने के लिए बहुत महत्वपूर्ण है जोड़ देंगे:

    धाराप्रवाह आप एक नए क्षेत्र को जोड़ने के लिए मैपिंग ओवरराइड कर सकते हैं के साथ

    । मौजूदा (सुपरक्लास) मैपिंग में परिवर्तन स्वचालित रूप से अनुकूलन/शाखा में शामिल किए जाते हैं। मुझे प्रत्येक ग्राहक के लिए एक अलग। एचबीएम/एक्सएमएल फ़ाइल को बनाए रखने से बचने के लिए फ्लुएंट का उपयोग करने के लिए मजबूर होना पड़ा। खुशी मैंने किया :)

    +0

    क्षमा करें, लेकिन क्या आप यह स्पष्ट कर सकते हैं कि xml को अपडेट करने से यह बेहतर कैसे है? – ArtB

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