मैं डैपर की तरह तथाकथित "माइक्रो ओआरएम" में देख रहा हूं और (कुछ हद तक यह .NET 4.0 पर निर्भर है) बड़े पैमाने पर क्योंकि ये हमारे वर्तमान सिस्टम के बाद से पूर्ण-पूर्ण ORM की तुलना में काम पर लागू करना आसान हो सकता है। संग्रहीत प्रक्रियाओं पर अत्यधिक निर्भर है और इसे NHibernate या EF जैसे ORM के साथ काम करने के लिए महत्वपूर्ण रिफैक्टिंग की आवश्यकता होगी। एक पूर्ण विशेषताओं वाले ORM में से किसी एक का उपयोग करने का क्या लाभ है? यह एक डेटाबेस कनेक्शन चारों ओर सिर्फ एक पतली परत है कि अभी भी बलों आप कच्चे एसक्यूएल लिखने के लिए की तरह लगता है - शायद मैं गलत हूँ लेकिन मैं हमेशा ORMs के लिए कारण बताया गया था, ताकि आप नहीं किया था में पहले स्थान पर है है , यह एसक्यूएल लिखने के लिए अपने आप उत्पन्न हो सकता है; विशेष रूप से मल्टी-टेबल जॉइन के लिए और रिश्तों को मैप करने के लिए जो शुद्ध एसक्यूएल में एक ओआरएम के साथ तुच्छ होने का दर्द है।
उदाहरण के लिए, डापर का एक उदाहरण देख रहे हैं:
var connection = new SqlConnection(); // setup here...
var person = connection.Query<Person>("select * from people where PersonId = @personId", new { PersonId = 42 });
यह कैसे एक नियंत्रित ADO.NET डेटा लेयर का उपयोग करने से अलग है, सिवाय इसके कि आपको कमांड लिखना नहीं है, पैरामीटर सेट करें और मुझे लगता है कि बिल्डर का उपयोग करके यूनिट को वापस मैप करें। ऐसा लगता है कि आप SQL स्ट्रिंग के रूप में संग्रहीत कार्यविधि कॉल का भी उपयोग कर सकते हैं।
क्या अन्य मूर्त लाभ हैं जो मुझे याद आ रहे हैं जहाँ एक माइक्रो ओआरएम उपयोग करने के लिए समझ में आता है? मैं वास्तव में यह नहीं देख रहा हूं कि कोड के कुछ पंक्तियों को छोड़कर ADO.NET का उपयोग करने के "पुराने" तरीके पर यह कुछ भी कैसे बचा रहा है - आपको अभी भी यह पता लगाने के लिए लिखना होगा कि आपको किस एसक्यूएल को निष्पादित करने की आवश्यकता है (जो बालों को प्राप्त कर सकते हैं) और आपको अभी भी तालिकाओं के बीच रिश्तों को मैप करना है (वह भाग जो IMHO ORM सबसे अधिक मदद करता है)।
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });
और फिर dog.First().Age
गुणों तक पहुँचने के लिए।