मैं अब के लिए dapper.net का उपयोग कर रहा हूं और यह एक बहुत अच्छा ओआरएम मैपर है जो नेट गतिशील प्रकारों के साथ बहुत अच्छा काम करता है लेकिन मैंने देखा कि जब डैपर डेटाबेस से डेटा पुनर्प्राप्त करता है तो यह डैपर पंक्ति प्रकार के रूप में आता है किसी भी तरह से मैं इसे सिस्टम की तरह किसी अन्य प्रकार में वापस कर सकता हूं। गतिशील। एक्सपेन्डो ऑब्जेक्ट?डैपर गतिशील रिटर्न प्रकार
उत्तर
DapperRow
ऑब्जेक्ट पंक्तियों के बीच बहुत सारे राज्य साझा करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए, यदि आप 40 पंक्तियां प्राप्त करते हैं, तो कॉलम नाम इत्यादि केवल को पर संग्रहीत किया जाता है। अगर हमने ExpandoObject
का उपयोग किया है, तो इसे प्रति पंक्ति कॉन्फ़िगर करने की आवश्यकता होगी। इसलिए, पीछे के दृश्यों के रूप में DapperRow
का उपयोग एक जानबूझकर दक्षता की बात है।
ध्यान दें कि dynamic
एपीआई से लौटाई गई वस्तु को IDictionary<string,object>
के रूप में भी डाला जा सकता है।
हालांकि, मैं अन्य प्रकारों का समर्थन करने के लिए खुला हूं, जो इस शब्दकोश उपयोग का समर्थन करते हैं - जिनमें से ExpandoObject
एक है।
var rows = conn.Query<ExpandoObject>(...);
काम करता है: तो हाँ, यह ऐसी है कि बदला जा सकता है। इसे बस पर का समर्थन करने की आवश्यकता है, और यह कोड वर्तमान में मौजूद नहीं है। तो "नहीं, लेकिन शायद भविष्य में निर्माण में"।
भी ध्यान रखें कि आप बिल्कुल DapperRow
उपयोग करने के लिए की जरूरत नहीं है ... और उम्मीद परिदृश्य अपने स्वयं के प्रकार के अमल में लाना करने के लिए सामान्य एपीआई का उपयोग करने के लिए है।
ज़रूर!
व्यवसायिक प्रलेखन के अनुसार क्वेरी विधि का उपयोग करें और अपने dymanics मिलती है:
dynamic account = conn.Query<dynamic>(@"
SELECT Name, Address, Country
FROM Account
WHERE Id = @Id", new { Id = Id }).FirstOrDefault();
Console.WriteLine(account.Name);
Console.WriteLine(account.Address);
Console.WriteLine(account.Country);
आप देख सकते हैं आप एक गतिशील वस्तु मिलता है और आप के रूप में वे अच्छी तरह से क्वेरी बयान में परिभाषित कर रहे हैं जब तक उसके गुण का उपयोग कर सकते हैं ।
यदि आप .FirstOrDefault()
छोड़ देते हैं तो आपको IEnumerable<dynamic>
मिलता है जो आप जो भी चाहते हैं उसे कर सकते हैं।
मुझे यह समस्या है और मैंने इस तरह से हल किया है!
Query()
फ़ंक्शन गतिशीलता का संग्रह देता है जो वास्तव में नीचे Dapper.SqlMapper.DapperRow
ऑब्जेक्ट प्रकार हैं। Dapper.SqlMapper.DapperRow
निजी है। मुझे गतिशील रूप से Dapper.SqlMapper.DapperRow ऑब्जेक्ट्स में गुण जोड़ने की आवश्यकता है लेकिन यह काम नहीं करता है। नतीजतन मैं Dapper.SqlMapper.DapperRow
को ExpandoObject
में परिवर्तित करना चाहता था।
मैं इस सामान्य सहायक विधि को नीचे की तरह बनाने में सक्षम था।
public class DapperHelpers
{
public static dynamic ToExpandoObject(object value)
{
IDictionary<string, object> dapperRowProperties = value as IDictionary<string, object>;
IDictionary<string, object> expando = new ExpandoObject();
foreach (KeyValuePair<string, object> property in dapperRowProperties)
expando.Add(property.Key, property.Value);
return expando as ExpandoObject;
}
}
तो फिर तुम है कि इस तरह का उपयोग कर सकते हैं:
IEnumerable<ExpandoObject> result =
db.SqlConn.Query(sqlScript)
.Select(x=> (ExpandoObject)ToExpandoObject(x));
संदर्भ: dapper-dot-net issues 166
- 1. गतिशील जहां डैपर
- 2. डैपर
- 3. डैपर
- 4. डैपर
- 5. गतिशील प्रकार
- 6. फ़ंक्शन का डायनामिक रिटर्न प्रकार
- 7. डैपर
- 8. डैपर
- 9. डैपर
- 10. डैपर समर्थन स्थानिक प्रकार। नेट कोर
- 11. डैपर स्क्लेमैपर एक्सटेंशन/डैपर। कॉन्ट्रिब?
- 12. आप एक रिटर्न प्रकार
- 13. डब्ल्यूसीएफ रिटर्न प्रकार
- 14. रिटर्न प्रकार पर ओवरलोडिंग?
- 15. शून्य रिटर्न प्रकार
- 16. वेबएपी 2 रिटर्न प्रकार
- 17. गैर-इकाई रिटर्न प्रकार
- 18. विधि रिटर्न प्रकार
- 19. गतिशील प्रकार
- 20. गतिशील प्रकार
- 21. गतिशील प्रकार
- 22. डैपर उदाहरण कोड
- 23. डब्ल्यूसीएफ, इंटरफ़ेस रिटर्न प्रकार और ज्ञात प्रकार
- 24. प्रकार 'System.Int32' का अभिव्यक्ति रिटर्न प्रकार 'System.Object'
- 25. डैपर। पेजिंग
- 26. सी # रिटर्न अलग-अलग प्रकार?
- 27. रिपोजिटरी पैटर्न और रिटर्न प्रकार
- 28. जावा जेनरिक और रिटर्न प्रकार
- 29. सी ++ टेम्पलेट फ़ंक्शन रिटर्न प्रकार
- 30. सी ++ जावा पैरामीटर/रिटर्न प्रकार
कारण है कि हम वस्तु को स्पष्ट रूप से expando को व्यवसायिक पंक्ति कन्वर्ट करने के लिए है, यह दृष्टिकोण सही निम्नलिखित के माध्यम से convertable है? var पंक्तियां = conn.Query (...); –
शायद डैपर के अगले संस्करण में जो सही काम करता है लेकिन संस्करण 1.4 में जो मैंने उपयोग किया था, उस परिवर्तित वस्तु में कोई संपत्ति नहीं है। मुझे इस समाधान को डैपर मुद्दों से मिला। – Behzad