entity framework डेटा कंट्रैक्टसिरीलाइजर: बिना डेटाकंट्रैक्ट/डेटामेम्बर विशेषताओं के वर्गों/सदस्यों को सीरियल करना




entity-framework serialization (3)

बस [Serializable] विशेषता के साथ वर्ग को चिह्नित करें कोई भी सदस्य आप के साथ क्रमबद्ध चिह्न नहीं चाहते [NonSerialized] ध्यान दें कि [सीरियलिज़ेबल] सभी क्षेत्रों को डिफ़ॉल्ट रूप से क्रमबद्ध करने का कारण बनता है, जहां [डेटा-कॉन्ट्रैक्ट] को [डेटामेम्बर] के साथ चिन्हित किए बिना कोई फ़ील्ड क्रमबद्ध नहीं होती

DataContractSerializer को कक्षाओं और सदस्यों को DataMember और DataMember विशेषताओं के साथ चिह्नित करने की आवश्यकता है। हालांकि, मेरे मामले में कक्षाएं ईएफपीको एडपाटर फ्रेमवर्क से स्वत: उत्पन्न होती हैं और इन विशेषताओं मौजूद नहीं हैं।

इन विशेषताओं के बिना डेटा कंट्रेक्ट सेरियलाइज़र का उपयोग करने वाले सभी सदस्यों के क्रमिकरण को कैसे उपस्थित किया जा सकता है?

Alexdej से:

यह 3.5 एसपी 1 में बदल गया, आशा है कि आपने यह देखा: http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx


आप नहीं कर सकते - सादे और सरल DataContractSerializer के लिए गुणों को सीरियललाइज़ करने के लिए कौन से तत्वों को चुनने की आवश्यकता है XmlSerializer के अनुबंध में, जो मूल रूप से केवल सब कुछ सीरियल करता है (जब तक कि आप स्पष्ट रूप से इसे अनदेखा करने के लिए नहीं कहते हैं), डेटा कॉन्ट्रैक्ट्रेसेलाइज़र "ऑप्ट-इन" है - आपको इसे स्पष्ट रूप से कहना है (विशेषताओं के माध्यम से) जो फ़ील्ड और / या गुण श्रृंखलाबद्ध करने के लिए

अद्यतन: जैसा कि कई लोगों ने बताया है, .NET 3.5 SP1 के साथ, माइक्रोसॉफ्ट ने उन नियमों को थोड़ा ढक दिया - कोई भी सार्वजनिक पठन / लिखें संपत्ति को डेटाकॉन्ट्रेटसिरियालाइज़र द्वारा स्वचालित रूप से क्रमबद्ध किया जाएगा। साथ ही, आपके क्लास को पैरामीटर रहित डिफॉल्ट कन्स्ट्रक्टर भी होना चाहिए - जैसा कि एक्सएमएल सेरियलआइज़र के लिए हमारे पास सटीक आवश्यकताओं की तरह लगता है जब ....

बेशक, यह:

  • आपको कुछ निजी धारावाहिक बनाने की अनुमति नहीं देता - यदि आप इसे सीरियल कराना चाहते हैं, तो आपको इसे सार्वजनिक रूप से पढ़ना / संपत्ति लिखना होगा
  • आपको मापदंडों के निर्धारित परिभाषित आदेश को निर्दिष्ट करने की अनुमति नहीं देता - यह केवल उन वर्गों में दिखाई देने के क्रम में उपयोग करेगा
  • अब आपको deserialization के लिए फिर से अपनी कक्षा में एक पैरामीलेबल कन्स्ट्रक्टर बनाने की आवश्यकता है

मुझे अभी भी लगता है कि यह बात स्पष्ट और स्पष्ट होना चाहिए, जो अब आवश्यक नहीं हैं, आलसी / ढलान प्रोग्रामिंग के लिए मार्ग को खोलने के लिए - मुझे यह पसंद नहीं है। लेकिन अगर आप चाहते हैं कि आप अपने गुणों को स्पष्ट रूप से [डेटामेम्बर] .....

न घुलनेवाली तलछट


मेरा मानना ​​है कि यह संभव है यदि आप ISerializable इंटरफ़ेस को लागू करते हैं तो सीरियललाइज़र उपयोगकर्ता विशेषताओं के बजाय आपके कार्यान्वयन हालांकि मुझे लगता है कि आपको अभी भी [सीरियलिज़ेबल] वर्ग को चिह्नित करना होगा

गुण जोड़ने से इसकी थोड़ी अधिक काम है लेकिन यह काम करता है।







efpocoadapter