2008-09-17 9 views
8

वर्तमान में मैं नेट डेटार्स का उपयोग कर रहा हूं ताकि मेरी डेटा एक्सेस लेयर और सर्विस लेयर उत्पन्न हो सके। मैं NetTiers का उपयोग 2 से अधिक वर्षों से कर रहा हूं और इसे बहुत उपयोगी पाया है। किसी बिंदु पर मुझे LINQ को देखने की ज़रूरत है, इसलिए मेरे प्रश्न हैं ...क्या मुझे LINQ से SQL का उपयोग शुरू करना चाहिए?

  1. क्या कोई और नेटटायर्स से LINQ से SQL तक चला गया है?
  2. क्या यह स्विच अच्छी या बुरी चीज़ पर था?
  3. क्या ऐसी कोई चीज है जिसके बारे में मुझे अवगत होना चाहिए?
  4. क्या आप इस स्विच की सिफारिश करेंगे?

असल में मैं किसी भी विचार का स्वागत करता हूं।

उत्तर

5
  1. नहीं
  2. देखें # 1
  3. आप मानक अमूर्त भूमि के ऊपर से सावधान करना चाहिए। इसके अलावा यह वर्तमान स्थिति में आधारित बहुत SQL सर्वर है।
  4. क्या आप SQL सर्वर का उपयोग कर रहे हैं, तो हो सकता है। यदि आप अन्य चीजों के लिए LINQ का उपयोग कर रहे हैं तो अभी एक्सएमएल डेटा (महान), ऑब्जेक्ट डेटा, डेटासेट्स की तरह, तो हाँ, आप सभी के लिए एक समान डेटा सिंटैक्स रखने के लिए स्विच कर सकते हैं। lagerdalek की तरह यह उल्लेख किया गया है कि यह तोड़ नहीं है, इसे ठीक न करें। .netTiers एप्लिकेशन फ्रेमवर्क पर त्वरित रूप से, मैं कहूंगा कि यदि आपके पास पहले से ही उस समाधान के साथ निवेश है तो ऐसा लगता है कि यह आपको एक साधारण डेटा एक्सेस लेयर से अधिक प्रदान करता है और आपको इसके साथ रहना चाहिए।

मेरे अनुभव से LINQ से SQL छोटे-मध्यम आकार की परियोजनाओं के लिए एक अच्छा समाधान है। यह एक ओआरएम है जो उत्पादकता बढ़ाने के लिए एक शानदार तरीका है। यह भी आपको अमूर्तता की एक और परत देता है जो आपको किसी और चीज़ के नीचे परत को बदलने की अनुमति देगा। विजुअल स्टूडियो में डिजाइनर (और मैं वीएस एक्सप्रेस भी विश्वास करता हूं) उपयोग करने के लिए बहुत आसान और सरल है। यह आपको ऑब्जेक्ट मैपिंग के सामान्य ड्रैग-ड्रॉप और प्रॉपर्टी-आधारित संपादन देता है।

@Jason Jackson - डिज़ाइनर आपको हाथों से गुण जोड़ने देता है, हालांकि आपको उस संपत्ति के गुणों को निर्दिष्ट करने की आवश्यकता है, लेकिन आप इसे एक बार करते हैं, तो डिज़ाइनर में तालिका के प्रारंभिक खींचने से 3 मिनट अधिक समय लग सकता है हालांकि, डेटाबेस में प्रति परिवर्तन के बाद ही यह आवश्यक है। यह अन्य ओआरएम से बहुत अलग नहीं है, हालांकि आप सही हैं कि वे इसे अधिक आसान बना सकते हैं, और केवल उन्हीं गुणों को ढूंढ सकते हैं जो बदल गए हैं, या ऐसी जरूरतों के लिए किसी प्रकार के रिफैक्टरिंग टूल को भी लागू कर सकते हैं।

संसाधन:

ध्यान दें कि Parallel LINQ विकसित किया जा रहा है ताकि बहु-कोर मशीनों पर अधिक प्रदर्शन किया जा सके।

1

नेटटीयर भारी और मजबूत डीएएल उत्पन्न करने के लिए बहुत अच्छा है, और हम मूल पुस्तकालयों और ढांचे के लिए आंतरिक रूप से इसका उपयोग करते हैं।

जैसा कि मैंने इसे देखा, LINQ (इसके सभी अवतारों में, लेकिन विशेष रूप से मुझे लगता है कि आप एसक्यूएल से पूछ रहे हैं) त्वरित डेटा पहुंच के लिए शानदार है, और हम आम तौर पर इसे अधिक चुस्त मामलों के लिए उपयोग करते हैं।

दोनों प्रौद्योगिकियां कोड या डीबीएमएल परत के पुनर्जनन के बिना बदलने के लिए काफी लचीली हैं।

कहा जा रहा है कि, ठीक से इस्तेमाल किया गया LINQ 2 एसक्यूएल काफी मजबूत समाधान है, और आप इसका उपयोग आसानी से उपयोग के कारण भविष्य के विकास के लिए भी शुरू कर सकते हैं, लेकिन मैं इसके लिए आपके वर्तमान डीएएल को फेंक नहीं दूंगा - अगर यह टूट गया ...

0

मेरा अनुभव मुझे बताता है कि linq का उपयोग करके आप चीजें तेजी से कर सकते हैं, हालांकि डेटाबेस के लिए वास्तविक क्रिया धीमी है।

तो ... यदि आपके पास एक छोटा डेटाबेस है, तो मैं इसके लिए कहूंगा। यदि नहीं, तो

+0

आपके अनुभव ने आपको कैसे बताया कि 'डेटाबेस में वास्तविक कार्रवाइयां धीमी हैं?' आपको प्रदर्शन प्रदर्शन के विवरण को अव्यवस्थित करना चाहिए ताकि लोगों को पता चले कि आप इसे अभी नहीं बना रहे हैं। – liammclennan

2

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

LINQ से SQL स्वयं ही अच्छा है। मुझे वास्तव में विस्तारशीलता पसंद है। अगर वे डिजाइनर को बेहतर बना सकते हैं तो मैं इसे फिर से कोशिश कर सकता हूं। मुझे लगता है कि ढांचे को वेब विकास जैसे डिस्कनेक्ट किए गए मॉडल के उद्देश्य से थोड़ी अधिक कार्यक्षमता से फायदा होगा।

इसका उपयोग करने के कुछ महान उदाहरणों के लिए ब्लॉग पोस्ट के Scott Guthrie's LINQ to SQL series देखें।

+0

आंशिक कक्षाओं का उपयोग करने के लिए आपको दिखाने के लिए एक शानदार साइट, LINQ से SQL उत्पन्न स्रोत फ़ाइल को संशोधित करने के लिए अभी भी डिज़ाइनर जेनरेट किए गए स्रोत को रीफ्रेश करने में सक्षम है। http://dotnetslackers.com/articles/csharp/Making-LINQ-to-SQL-A-Bit-More-Abstract.aspx –

0

मैं अभी काफी बड़ी परियोजना (लगभग 150 टेबल) पर LINQ से SQL का उपयोग कर रहा हूं और यह मेरे लिए बहुत अच्छा काम कर रहा है। मैंने जो अंतिम ओआरएम इस्तेमाल किया था वह आईबीटिस था और यह अच्छी तरह से काम करता था लेकिन आपके मैपिंग करने के लिए बहुत सारे कदम उठाए। LINQ से SQL मेरे लिए बहुत अच्छा प्रदर्शन करता है और अभी तक बॉक्स के बाहर उपयोग करना बहुत आसान साबित हुआ है। निश्चित रूप से संक्रमण में आप को दूर करने के लिए कुछ मतभेद हैं, लेकिन मैं इसका उपयोग करने की सिफारिश करता हूं।

साइड नोट, मैंने नेटटीयर्स के बारे में कभी भी उपयोग या पढ़ा नहीं है, इसलिए मैं इसकी प्रभावशीलता को छूट नहीं दूंगा, लेकिन सामान्य रूप से LINQ से SQL एक बेहद व्यवहार्य ओआरएम साबित हुआ है।

0

हमारी टीम नेटटायर्स का उपयोग करती थी और इसे उपयोगी साबित करती थी। लेकिन ... जितना अधिक हमने इसका इस्तेमाल किया, उतना ही हमने सिरदर्द और दर्द के साथ अंक प्राप्त किए।

  • फिर से पैदा 3 अलग परियोजनाओं में कोड की लाइनों के हजारों
  • फिर से पैदा सैकड़ों: उदाहरण के लिए, किसी भी समय आप डेटाबेस में बदलाव करते हैं, तो आप जो शामिल CodeSmith साथ दाल दोबारा बनाने के लिए की जरूरत है संग्रहीत प्रक्रियाओं के

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

तब प्रकाश ओआरएम के रूप में एनएचबीरनेट को आया। यह निश्चित रूप से इसके लिए एक रैंप-अप समय है लेकिन यह इसके लायक है। इसके लिए समर्थन का एक टन है इसलिए अगर आपको कुछ करने की ज़रूरत है, तो इससे पहले कि यह पहले किया गया हो। यह बेहद लचीला है और आपको इसके हर पहलू को नियंत्रित करने की अनुमति देता है और फिर कुछ। यह भी उपयोग करना आसान और आसान हो रहा है। फ्लुएंट निबर्ननेट ऊपर और एक्सएमएल मैपिंग फाइलों से छुटकारा पाने के लिए एक शानदार तरीका के रूप में आ रहा है और एनएचबीरनेट प्रोफाइलर एक उत्कृष्ट इंटरफ़ेस प्रदान करता है ताकि दृश्यों को पीछे लाने और अनावश्यकता को दूर करने के लिए दृश्यों के पीछे क्या हो रहा है।

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

+0

netTiers के साथ आप संग्रहीत प्रक्रियाओं के बजाय paramerterized sql का उपयोग करने के लिए सेट कर सकते हैं। यह आपको डीबी में एसपी गड़बड़ से बचाता है। –

+1

हैलो, हम .netTiers (v3.0) के अगले संस्करण में इन ओवरहेड्स और दर्द बिंदुओं को हटाने/कम करने के लिए काम कर रहे हैं। धन्यवाद -लेक निमेजस्की –