2008-08-05 6 views
5

हमारे पास हमारे डेटाबेस कॉल (ADO.NET के आस-पास एक हल्का आवरण) के लिए घर में एक साधारण उपयोगिता कक्षा है, लेकिन मैं प्रत्येक डेटाबेस/ऑब्जेक्ट के लिए कक्षाएं बनाने की सोच रहा हूं। क्या ऐसा करने के लिए यह स्मार्ट बात होगी, या अगर हम एएसपी.नेट के लिए पूर्ण एमवीसी ढांचे का उपयोग कर रहे थे तो क्या इसका फायदा होगा?क्या मॉडल कक्षाएं बनाना या जेनेरिक डेटाबेस उपयोगिता वर्ग के साथ छड़ी बेहतर है?

SQLWrapper.GetRecordset(connstr-alias, sql-statement, parameters); 
SQLWrapper.GetDataset(connstr-alias, sql-statement, parameters); 
SQLWrapper.Execute(connstr-alias, sql-statement, parameters); 

ऐसा करने के बारे में सोच:

तो हम इस राशि

Person p = Person.get(id); 
p.fname = "jon"; 
p.lname = "smith"; 
p.Save(); 

या एक नया रिकार्ड के लिए -

Person p = new Person(); 
p.fname = "Jon"; 
p.lname = "Smith"; 
p.Save(); 
p.Delete(); 

इस स्मार्ट होगा, या यह होगा overkill? मैं पुन: उपयोग, डेटाबेस बदलने और रखरखाव/पठनीयता के लिए लाभ देख सकता हूं।

उत्तर

8

यह प्रश्न लोड किया गया है, डेटा संचालित डिज़ाइन बनाम डोमेन संचालित डिज़ाइन। किसी भी एप्लिकेशन के लिए जिसमें अच्छी मात्रा में व्यवहार है, तो डोमेन संचालित डिज़ाइन को प्राथमिकता दी जानी चाहिए। रिपोर्टिंग, या उपयोगिता अनुप्रयोग डेटा संचालित डिजाइन के साथ बेहतर काम करते हैं (या विकसित करने के लिए तेज़ होते हैं)।

आप जो पूछ रहे हैं वह है "क्या मेरी कंपनी को हमारे कोड को डिजाइन करने में मौलिक बदलाव करना चाहिए"। एक डोमेन-सनकी के रूप में, मेरी आंत प्रतिक्रिया हाँ चिल्लाती है। हालांकि, आपके प्रश्न की सरल प्रकृति से, मुझे यकीन नहीं है कि आप जो परिवर्तन प्रस्तावित कर रहे हैं उसके दायरे को पूरी तरह समझते हैं। मुझे लगता है कि आपको इसके बारे में अपनी टीम से और बात करनी चाहिए।

कुछ साहित्य प्राप्त करें, जैसे कि Evan's DDD पुस्तक, या free foundations ebook, और फिर आप यह तय करने के लिए बेहतर स्थिति में होंगे कि आपको किस दिशा में जाना चाहिए।

+0

जानकारी के लिए धन्यवाद, मैं उन पुस्तकों को देखूंगा। क्षमा करें मेरा प्रश्न लोड/सरल था। मैं बहुत ज्यादा लिखना नहीं चाहता था, और संभवतः मॉडल बनाम नो-मॉडल के बारे में पूछा जाना चाहिए था। मेरी टीम के साथ समस्या यह है कि मैं यहां नया हूं, और वे बहुत सारे चल रहे हैं और विरासत क्लासिक-एएसपी कोड की बहुत सारी विरासत हैं, साथ ही वे एएसपी.Net की कुछ सुविधाओं का उपयोग करते समय भी उस तरह से विकसित होते हैं। (पहले इसे उत्तर के रूप में उत्तर दिया गया था, जिसे समुदाय नियमों के अनुसार हटा दिया गया था) –

2

एमवीसी वेब के लिए एकमात्र डिज़ाइन पैटर्न नहीं है, लेकिन यह एक उपयोगी है।

केवल 'एम' को अपनाने से मेरी राय में लाभांश का भुगतान होगा, भले ही आप 'वी' या 'सी' को अपनाना नहीं चाहें।

+0

इनपुट के लिए धन्यवाद, मुझे लगता है कि मैं इसे 'एम' जोड़ना/बदलना शुरू कर दूंगा! (पहले उत्तर के रूप में उत्तर दिया गया था, जिसे समुदाय नियमों के अनुसार हटा दिया गया था) –

0

मेरे लिए ऐसा लगता है कि आप ऐसा करने की कोशिश कर रहे हैं जो LINQ आपके लिए पहले से ही कर सकता है। यदि आप पुराने फ्रेमवर्क में फंस गए हैं जिसमें आप इसका उपयोग नहीं कर सकते हैं, तो मैं सुझाव दे सकता हूं कि आप इन सभी मॉडल ऑब्जेक्ट्स को मैन्युअल रूप से मैन्युअल रूप से बनाने के बजाय सबकोनिक (http://subsonicproject.com/) का उपयोग करें।

मेरे पास एक प्रोजेक्ट था जहां मैं एक समान परिस्थिति में था और शानदार परिणाम के साथ आधे रास्ते में बदल गया। त्वरित विकास और कोड पढ़ने/उपयोग करने में बहुत आसान है।

+0

मैं लिंक लिखने के लिए लिंक से SQL का परीक्षण कर रहा हूं, यह बहुत अच्छा है। ऐसा लगता है कि यह सरल मानचित्रण के लिए है, लेकिन यह मुझे आवश्यक किसी भी चीज़ के लिए पर्याप्त होना चाहिए। निश्चित रूप से कुछ जो उत्पन्न किया जाना चाहिए। –

2

आपके द्वारा चर्चा की जाने वाली दृष्टिकोण को कई लोगों द्वारा अच्छा माना जाता है, मुझे शामिल किया गया है! इस दृष्टिकोण को सीखने के लिए कुछ प्रयास की आवश्यकता होगी, लेकिन इसे आपको छोड़ने न दें!

LINQ से SQL के साथ छोटी परियोजना की कोशिश करने के बारे में क्या? शायद google code पर nice reference project खोजें, और अध्ययन करें कि दूसरों ने इसके साथ कैसे काम किया है।

यह एक साधारण टूल है, और आपको डेटाबेस में ऑब्जेक्ट्स मैपिंग के साथ आने वाले कुछ मुद्दों से परिचित होने देगा।

फिर आप के लिए एक महसूस कर सकते हैं, और यह तय कर सकते हैं कि यह सीखने की अवस्था के लायक है या नहीं।

वहाँ के साथ और प्रयोग समझ नई अवधारणाओं, जैसी चीजों के लिए किया जाएगा: कार्य की

  • इकाई: जब आप सहेजें निष्पादित और आदि को हटा दें, एक ORM इस तुरंत ऐसा नहीं करता है, जबकि, एक रिकॉर्डसेट आधारित डीएएल होगा। यह आश्चर्यजनक हो सकता है ताकि आपको इसके बारे में कुछ सीखना पड़े। इस की समझ प्राप्त करने के लिए कार्य पैटर्न इकाई पर पढ़ें।
  • थोक संचालन OR/M के साथ कोई समस्या है। एक डेटा रीडर कुशलतापूर्वक हजारों पंक्तियों के माध्यम से पुन: सक्रिय हो सकता है, लेकिन ऑरम के साथ आपको वस्तुओं के बड़े बैचों के साथ काम करते समय सावधान रहना होगा। फिर, एक को पढ़ने के लिए।
  • एसोसिएशनcustomer.Orders.Count जैसी चीजें कर सकते हैं, लेकिन वे कई समस्याओं का कारण भी हैं। एसोसिएशन के साथ काम करते समय आपको कुछ सुरक्षित अभ्यासों को पालन करने की आवश्यकता होगी।

... कुछ नाम देने के लिए।

शुरुआत के लिए, विरासत और सामान के बारे में चिंता न करें, बस सरल शुरू करें और टेबल पर मैप करने वाली सरल इकाइयां रखें।

उसी तरह उनका उपयोग करने का प्रयास करें जैसे आप अपने मौजूदा डीएएल का उपयोग करेंगे। फिर संघों के साथ प्रयोग करना शुरू करें।

तो शायद अपनी संस्थाओं में अधिक व्यवहार डालने का प्रयास करें। यदि आप इसे पसंद करना शुरू करते हैं, और आपको लगता है कि आपको और अधिक सुविधाएं चाहिए, तो अधिक सुविधा युक्त ओआरएम को Lightspeed या NHibernate की कोशिश करने पर विचार करें।

आशा है कि इससे मदद मिलती है!

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