मैं पेटापोको के साथ पीओसीओ में एक तालिका को बदलने के लिए प्रयोग कर रहा हूं।क्या पेटापोको संभालता है?
मेरी तालिका में, मुझे TheEnum
नामक कॉलम मिला है।
public enum MyEnum
{
Fred,
Wilma
}
PetaPoco chokes जब यह एक MyEnum
मूल्य में स्ट्रिंग "फ्रेड" कन्वर्ट करने के लिए कोशिश करता है: इस स्तंभ के मानों तार कि निम्नलिखित enum का प्रतिनिधित्व कर रहे हैं।
यह GetConverter
विधि में यह करता है, लाइन में:
Convert.ChangeType(src, dstType, null);
यहाँ, src
"फ्रेड" (एक string
) है, और dstType
typeof(MyEnum)
है।
अपवाद Invalid cast from 'System.String' to 'MyEnum'
कह मैं कुछ याद आ रही हूँ एक InvalidCastException
है? क्या मुझे पहले पंजीकरण करने की ज़रूरत है?
मैं GetConverter
विधि में निम्न को जोड़कर समस्या को हल मिल गया है:
if (dstType.IsEnum && srcType == typeof(string))
{
converter = delegate(object src)
{
return Enum.Parse(dstType, (string)src) ;
} ;
}
जाहिर है, मैं नहीं चाहता कि प्रत्येक पंक्ति पर इस प्रतिनिधि को चलाने के लिए के रूप में यह बातें काफी धीमा करेंगे चाहते हैं। मैं चीजों को गति देने के लिए इस एनम और उसके मूल्यों को एक शब्दकोश में पंजीकृत कर सकता हूं, लेकिन ऐसा लगता है कि ऐसा कुछ भी उत्पाद में पहले से ही होगा।
तो, मेरा सवाल है, क्या मुझे पेटापोको के साथ अपने enums रजिस्टर करने के लिए कुछ भी करने की ज़रूरत है?
अद्यतन 23 वें फरवरी 2012
मैं submitted a patch थोड़ी देर पहले लेकिन यह अभी तक में खींच लिया नहीं किया गया है। यदि आप इसका उपयोग करना चाहते हैं, तो पैच को देखें और अपने कोड में विलय करें, या केवल from here कोड प्राप्त करें।
** अपडेट जून 28, 2012 ** सटीक पैच अभी भी लागू नहीं किया गया है लेकिन इसी कोड को [v5 शाखा] (https://github.com/toptensoftware/PetaPoco/tree/v5) में जोड़ा गया है। यह भी देखें http://www.toptensoftware.com/Articles/137/Long-Time-No-Post-and-PetaPoco-v5 –
यदि यह आपके लिए मुश्किल नहीं है, तो कृपया npoco को पैच सबमिट करें। मैं आपको npoco पर स्विच करने की सलाह देता हूं, क्योंकि इसमें अधिक सक्रिय विकास होता है और इसमें सभी सुविधाएं हैं जिन्हें पेटपाको के पास और भी बहुत कुछ है। – AuthorProxy
** अपडेट 9 सितंबर, 2014 ** @iano उत्तर अंतिम ** 5.0.2 ** संस्करण के लिए सही है। –