LINQ vs डाटा एक्सेस लेयर


10

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

अपनी अधिकांश घरेलू परियोजनाओं के लिए, मैं अपने खुद के बनाए गए ORM का उपयोग करता हूं, जिसे मैं हमेशा ओपन-सोर्स बनाने का इरादा रखता हूं। हालाँकि तब से, LINQ उपलब्ध हो गया, जो मेरे ORM के काम करने के तरीके (लेकिन .. बेहतर) के समान था।

ऐसा कुछ भी नहीं है जो मैं पहले अपने स्वयं के ORM के साथ कर सकता था जिसे मैं अब LINQ (REST एकीकरण के बिट्स को छोड़कर) के साथ नहीं कर सकता। तो मेरा सवाल है; LINQ मेरा नया डेटा एक्सेस लेयर है? क्या मुझे अब इस परत की आवश्यकता है? क्या मेरे BLL को सीधे LINQ से बात करनी चाहिए? या यह बुरी प्रथा अभी भी है?

संपादित करें:

मूल प्रश्न LINQ से लेकर संस्थाओं तक का जिक्र था, लेकिन LINQ से SQL के संबंध में कई दिलचस्प जवाब हैं। इन दोनों पर लोगों के क्या विचार हैं? मैं LINQ से SQL तक इकट्ठा करता हूँ, वास्तव में एक DAL की जगह नहीं ले सकता, लेकिन Entity फ्रेमवर्क?

जवाबों:


7

हालाँकि आप अपने BLL में LINQ क्वेरीज़ डाल सकते हैं, इससे कोड डुप्लिकेट हो सकता है। मैं अभी भी रिपॉजिटरी बनाऊंगा जो LINQ प्रश्नों का आवरण होगा। यह डेटाबेस कोड को बीएलएल कोड से अलग करेगा और तब उपयोगी होगा जब आप अपना डेटा एक्सेस कोड संशोधित करने का निर्णय लेंगे (यानी डापर पर स्थानांतरित करें, या पहले से तैयार प्रश्नों के लिए)।

यह इकाई परीक्षण में भी मदद करेगा , क्योंकि रिपॉजिटरी को आसानी से मॉक किया जा सकता है।


6

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


मैं मानता हूं, LINQ to SQL सिर्फ एक क्वेरी लैंग्वेज है जो आपको ढेर सारे प्लंबिंग कोड लिखने से रोक सकती है। यह एक डीएएल चाहिए जैसे आपके आवेदन में डेटा का उपयोग नहीं करता है।
नेओन्तापीर

मैं वास्तव में LINQ एंटिटीज की बात कर रहा था। मैं भी बहुत LINQ वस्तुओं का उपयोग करते हैं, लेकिन मुझे लगता है कि व्यापार तर्क है। मैं Entities और LINQ से SQL के बीच के पीछे के अंतर को समझता हूं, लेकिन मैंने कभी LINQ को SQL में उपयोग नहीं किया है। क्या सिंटैक्स में कोई अंतर हैं?
Connell

2

Linq डेटा एक्सेस के बारे में नहीं है, आप किसी भी दिशा में linq का उपयोग कर सकते हैं IEnumerable

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

उस डेटा एक्सेस लेयर में आप अपने स्वयं के ORM का उपयोग कर सकते हैं या आप Linq को sql में उपयोग कर सकते हैं, यह तब तक मायने नहीं रखता है जब तक डेटा एक्सेस लेयर आपके द्वारा परिभाषित रिपॉजिटरी को लागू करता है।


1

जब तक आप लेन-देन और क्वेरी प्रदर्शन को संबोधित करने के लिए अपनी "व्यापार तर्क परत" नहीं चाहते हैं, तब भी एक डीएएल की आवश्यकता है।

LINQ क्वेरी की घोषणा को एक डिज़ाइन-टाइम (उर्फ, संकलक जाँच) प्रक्रिया बनाती है।

LINQ क्वेरी प्रदाता (जैसे LinqToSql और LinqToEntities) अभी भी उन घोषित प्रश्नों के रन-टाइम रूपांतरण को sql टेक्स्ट में करते हैं। फिर DBMS अभी भी रन-टाइम क्वेरी व्याख्या, रन-टाइम क्वेरी प्लान जेनरेशन आदि करता है।

ये DAL का सिर्फ एक छोटा सा हिस्सा हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.