यह मृत नहीं है, लेकिन माइक्रोसॉफ्ट अब एंटिटी फ्रेमवर्क पर केंद्रित है।
मैंने छोटे प्रोजेक्ट्स पर LINQ to SQL का उपयोग किया है, और यह एक हल्के डेटा-लेयर के रूप में काफी अच्छा है और मैं इसे इसी तरह के आकार के प्रोजेक्ट्स पर फिर से उपयोग करने पर विचार करूँगा। LINQ कार्यान्वयन में ही वास्तव में अच्छा है और हाल ही में जब तक है बहुत NHibernate LINQ परियोजना की तुलना में बेहतर। जिस बड़े प्रोजेक्ट पर मैंने L2S का उपयोग किया है, मैंने L2S 'DataContext' वर्ग के साथ सीमाओं के कारण, एक यूनिट-ऑफ़-वर्क-वर्क पैटर्न के साथ आना मुश्किल समझा। L2S के साथ 'सेशन प्रति अनुरोध' जैसा कुछ लागू करने की कोशिश या तो बहुत कठिन या असंभव लगती है।
मैं भी वास्तव में L2S को एक सच्चा ORM नहीं मानता, क्योंकि यह वास्तव में आपको कई मैपिंग विकल्प नहीं देता है। आपके वर्ग के डिजाइन को वास्तव में आपके डेटाबेस स्कीमा (तालिका-प्रति-वर्ग) का पालन करने की आवश्यकता है अन्यथा यह आपके साथ हर कदम पर संघर्ष करेगा। L2S के बारे में एक और चीज जो मुझे पसंद नहीं है, वह है संग्रह, संदर्भ और आलसी-लोडिंग को संभालने के लिए विशिष्ट प्रकार ( EntitySet
और EntityRef
) का उपयोग करने की आवश्यकता । इसका मतलब यह है कि अमूर्त की एक और परत जोड़े बिना अपने डोमेन मॉडल ORM अज्ञेय को रखना संभव नहीं है।
L2S के साथ मेरा अन्य मुद्दा प्रश्नों को उत्पन्न करने के लिए LINQ पर एकमात्र निर्भरता है। LINQ प्रदाता बहुत अच्छी तरह से लिखा गया है और आम तौर पर प्रश्नों के बहुमत के लिए सभ्य SQL बनाता है, लेकिन मेरी चिंताएं हैं कि अधिक जटिल प्रश्न हैं जिन्हें LINQ के साथ अच्छी तरह से व्यक्त नहीं किया जा सकता है। मूल रूप से इन मामलों में संग्रहीत प्रक्रियाओं को कॉल करने के लिए आपको L2S का उपयोग करना पड़ता है, जबकि (उदाहरण के लिए) NHibernate में कई API (LINQ प्रदाता, QueryOver, HQL आदि) हैं जिनका उपयोग तब किया जा सकता है जब आप उत्पन्न SQL पर अधिक नियंत्रण चाहते हैं।
NH2nate पर L2S के बचाव में, इसे प्रोजेक्ट पर लाने और चलाने में बहुत कम ओवरहेड होता है।