8

हाल ही में मैं उपलब्ध .NET आधारित ORM में देख रहा हूं। मैंने देखा है कि प्रत्येक एक या दो शिविरों में बैठता है। एक शिविर में डेटाबेस पहले बनाया जाता है, और ओआरएम किसी एप्लिकेशन में डेटाबेस तक पहुंचने का एक आसान तरीका प्रदान करता है। दूसरे शिविर में ऑब्जेक्ट मॉडल पहले मौजूद है और ओआरएम डेटाबेस में ऑब्जेक्ट मॉडल को बनाए रखने में सुविधा प्रदान करता है।ओआरएम तुलना: जो डेटाबेस या कक्षाओं में सबसे पहले आता है?

अब मैं नहीं पूछ रहा हूं या दावा कर रहा हूं कि एक शिविर बेहतर है या नहीं। मैं निश्चित रूप से प्रत्येक डिजाइन पद्धति के कारणों को देख सकता हूं। मुझे निराशाजनक क्या है सभी ट्यूटोरियल और "प्रारंभ करना" दस्तावेज़ों में से मैंने हाल ही में पढ़ा है, कोई भी अभी बाहर नहीं आया है और बहुत शुरुआत में कहता है "यह टूल मानता है कि आप मौजूदा डेटाबेस/ऑब्जेक्ट मॉडल से शुरू कर रहे हैं"। मेरे लिए यह बहुत मौलिक है कि आप एक ओआरएम बनाम दूसरे का उपयोग करेंगे या नहीं।

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

Linq To SQL

  • डाटाबेस मौजूद होना चाहिए पहले
  • केवल एसक्यूएल सर्वर के साथ काम करता
  • DataContext कक्षा वर्गों और डेटाबेस के बीच/लिखने
  • DataContext वास्तविक भौतिक कक्षाओं retun कर सकते हैं पढ़ने के लिए प्रयोग किया जाता है, या गतिशील प्रकारों का उपयोग स्वचालित रूप से डेटाबेस स्कीमा के आधार पर प्रकार बनाने के लिए किया जा सकता है। कॉलम नामों में वर्ग के नाम करने के लिए मानचित्रण तालिका नाम, और संपत्ति के नाम करने के लिए
  • मानचित्रण चूक
  • मानचित्रण प्रत्येक वर्ग

Subsonic (Active Record)

  • डाटाबेस होना चाहिए में एम्बेडेड विशेषताओं के माध्यम से अनुकूलित किया जा सकता पहले
  • कई डेटाबेस तकनीकों के साथ काम करता है
  • वर्ग का उपयोग कर टी -4 टेम्पलेट्स डेटाबेस के लिए
  • कनेक्शन मौजूदा डेटाबेस स्कीमा से स्वचालित रूप से उत्पन्न कर रहे हैं पूरी तरह से पारदर्शी एक बार कक्षाएं automagicaly डेटाबेस
  • संपत्ति मूल्यों को बदलने से स्वत: डेटाबेस अपडेट हो जाता है में रिकॉर्ड बनाने के उत्पन्न कर रहे हैं
    • कॉलिंग वर्ग कंस्ट्रक्टर्स है।

Subsonic (Simple Repository)

  • वर्ग संरचना आना चाहिए डेटाबेस प्रौद्योगिकियों
  • भंडार श्रेणी का निर्माण और एक डेटाबेस
  • डाटाबेस स्कीमा से जुड़ा है की संख्या के साथ पहले
  • वर्क्स वर्गों को जोड़े जाने पर स्वचालित रूप से बनाया और अद्यतन किया गया है भंडार
    • repo.Add<MyClass>(instance);
    • भंडार/अद्यतन बनाने के लिए प्रतिबिंब का उपयोग करता है डेटाबेस स्कीमा
    • हर बार के लिए एक तालिका बनाएं और प्रत्येक प्रॉपर्टी

NHibernate

के लिए एक कॉलम
  • या तो डेटाबेस या वर्ग संरचना पहले बनाया जा सकता है
    • मानचित्रण एक मौजूदा डेटाबेस के लिए एक नया वर्ग संरचना से मेल करने के लिए बनाया जा सकता है
    • मानचित्रण इस्तेमाल किया जा सकता की संख्या के साथ स्वचालित रूप से generate the database schema
  • निर्माण करने के लिए डेटाबेस टेक्नोलॉजीज
  • अंतिम असेंबली के अंदर कक्षाएं एनएचबेर्नेट मैपिंग सेटिंग्स के साथ जिम्मेदार हैं जो टेबल और कॉलम के लिए कक्षाएं और गुणों को मानचित्रित करती हैं
  • मैप जोड़ने के दो तरीके हैं ing विन्यास
    • एक्सएमएल बाइनरी में embeded फ़ाइलें, <classname>.hbm.xml
    • गुण, कई लोगों के लिए, कोड
  • एक करने के लिए एक मई को एक सहित उन्नत मानचित्रण विन्यास का समर्थन करता है करने के लिए जोड़ा एक करने के लिए कई, कई विरासत etc..l आदि ...
+1

क्या मदद मिलेगी? –

+0

आप इकाई फ्रेमवर्क भूल गए हैं। ईएफ के साथ आप या तो डीबी पहले या कक्षा के पहले विकास कर सकते हैं। आप EntitySet के माध्यम से डेटाबेस के साथ काम करते हैं। आपके पास इकाई फ्रेमवर्क का उपयोग करके कई डेटाबेस के साथ काम करने की क्षमता भी है। –

+0

मैं सिर्फ ईएफ में देखने के लिए नहीं मिला है। मैंने जो पढ़ा है उससे ईएफ का 3.5 संस्करण वास्तव में तैयार नहीं था। 4 की तरह लगता है।0 संस्करण में सुधार है, लेकिन मैंने पिछले सप्ताह के अंत में वीएस 2010 स्थापित किया था। मैं निश्चित रूप से किसी भी उत्तर को सुनना चाहूंगा कि ईएफ के साथ वर्कफ़्लो सूचीबद्ध अन्य ORMS की तुलना में कैसे तुलना करता है। –

उत्तर

2

टिप्पणियां जो इकाई की रूपरेखा लाया से जारी रखते हुए:

Entity Framework(wikipedia also has some nicely structured information)

  • दोनों कोड पहले मॉडल पहली और डेटाबेस पहले विकास का समर्थन करता है। पहले कोड और मॉडल के बीच का अंतर यह है कि कोड में पहले आप पहले इकाई वर्ग लिखते हैं, जबकि मॉडल में पहले आप पहले डेटा मॉडल तैयार करते हैं और इसके आधार पर इकाइयां उत्पन्न होती हैं। मेटाडाटा मॉडल (ईडीएमएक्स) के आधार पर
  • (हालांकि यह पहले कोड से अनुपस्थित है) जो मैपिंग को भी परिभाषित करता है; ईडीएमएक्स एक एक्सएमएल मॉडल है जिसमें डेटाबेस संरचना, इकाई संरचनाएं और उनके बीच मैपिंग शामिल हैं और विजुअल स्टूडियो में बनाए गए डिज़ाइनर द्वारा समर्थित है।कोड-प्रथम में, मैपिंग को ईडीएमएक्स की बजाय कोड में परिभाषित किया जाता है।
  • एकाधिक डेटाबेस तकनीकों का समर्थन करता है (मैंने MySQL और Oracle का उपयोग किया है)।
  • टी -4 कोड पीढ़ी (v4 में) है, जो दिलचस्प तानाना परिदृश्यों के लिए अनुमति देता है के अलावा, उत्पन्न कर सकते हैं के आधार पर:
    • संस्थाओं एक आधार वर्ग से इकाई की रूपरेखा (EntityObject) करने के लिए ली गई विशिष्ट
    • POCO संस्थाओं जो डॉन ' टी
    • स्व-ट्रैकिंग इकाइयों पर इकाई फ्रेमवर्क पर निर्भर करता है।
  • आरआईए सेवाओं (सिल्वरलाइट) के साथ अच्छी तरह से काम करता है।
  • मुझे लगता है कि कई रिश्तों के प्रकार, और कई रणनीतियों के साथ विरासत का समर्थन करता है (हालांकि उनमें से कुछ के साथ कुछ समस्याएं हो सकती हैं)।
  • लिंक (लिंक से इकाइयों) के लिए बहुत अच्छा समर्थन।

वहाँ भी LLBLGen, जो मैं उपयोग नहीं किया है, लेकिन अपने सहकर्मियों में से एक की टिप्पणी से यह के रूप में महान खड़े नहीं करता है।

मैंने संक्षेप में यद्यपि एनएचबीर्नेट का उपयोग किया है, और इंप्रेशन अच्छा था; भले ही वापस यह परिपक्व नहीं था जैसा कि अब है, यह अभी भी एक बहुत अच्छी लाइब्रेरी थी। यकीन नहीं है कि मुझे अब एनएच और ईएफ के बीच चयन करना है ... मुझे लगता है कि मैं ईएफ के साथ जाऊंगा क्योंकि मैं पिछले साल या उससे भी ज्यादा उपयोग कर रहा हूं और विकास तेजी से (मेरे लिए अकेले) होगा, लेकिन फीचर -wise एनएच थोड़ा बेहतर हो सकता है।

+0

एनएच और ईएफ जैसे लगता है अब काफी समान हैं? –

+0

मुझे नहीं लगता कि मैं उस पर टिप्पणी करने वाला सबसे अच्छा हूं लेकिन हाँ, मुझे लगता है कि वे हैं। एनएच कुछ चीजों को बेहतर तरीके से संभाल सकता है, जैसे कि कुछ इकाई विरासत परिदृश्य, और इसमें अधिक एक्सटेंशन/प्लगइन्स इत्यादि हैं क्योंकि यह खुला स्रोत है। हालांकि तुलना के अन्य पहलुओं के बारे में पता नहीं है। –

+1

आपके सहकर्मियों ने एलएलबीएलजेन प्रो को वर्गीकृत नहीं किया है? क्या आप इसे विस्तार से समझा सकते हैं? –

1

ईमानदारी से, कोई अर्ध-सभ्य ओआरएम पहले डेटाबेस और कोड पहले डिजाइन दोनों को संभाल सकता है।

आपके प्रश्न में शामिल सभी ओआरएम (ईएफ 4 और एलएलबीएलजेन प्रो 3 समेत) या तो कर सकते हैं, लेकिन दर्द की अलग-अलग मात्रा हो सकती है। उदाहरण के लिए, LinqToSql के लिए पहले कोड करना वास्तव में ऐसा नहीं था जिसका उद्देश्य था, लेकिन मेरा मानना ​​है कि ओपन सोर्स प्रोजेक्ट्स हैं जहां यह सुविधा "बोल्ट" थी। उस ने कहा, मूल रूप से LinqToSQL को अनुशंसा करने का कोई अच्छा कारण नहीं है कि माइक्रोसॉफ्ट इसके बजाय एंटीटी फ्रेमवर्क की तरफ हर किसी को धक्का दे रहा है।

अभी, NHibernate शायद सबसे अच्छी समग्र कोड पहली कहानी है। यह राय करना मुश्किल है कि किस ओआरएम के पास सबसे अच्छी समग्र डेटाबेस पहली कहानी है, यह देखते हुए कि वे सभी इसका बहुत समर्थन करते हैं, और यह विशेष उपयोग मामला वास्तव में नहीं है कि आपको अपना निर्णय किस आधार पर रखना चाहिए।

यह एक अच्छा ओआरएम है या नहीं, यह एक ओआरएम चुनें। अच्छे ओआरएम पहले डेटाबेस और पहले दोनों कोड का समर्थन करते हैं।

1

मैं कुछ ओआरएम उपकरण का मूल्यांकन भी कर रहा हूं। मैंने अपने अनुभवों के बारे में कुछ ब्लॉग लिखे। हो सकता है यह आप ADO.NET इकाई की रूपरेखा के बारे में

http://nileshgule.blogspot.com/2010/09/entity-framework-part-2-comparison.html

http://nileshgule.blogspot.com/2010/09/nhibernate-code-first-approach-with.html

http://nileshgule.blogspot.com/2010/08/entity-framework-hello-world.html

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