2012-03-06 9 views
8

मैंने सी # में mongoDB के साथ थोड़ा सा काम किया है लेकिन मेरा पूरा कोड अभी भी विकास में है। मैं सोच रहा हूं कि लोगों ने समय के साथ अपने डोमेन कक्षाओं को विकसित करने में क्या उपयोगी पैटर्न पाया है क्योंकि नई गुणें बनाई गई हैं, बदली गई हैं और हटा दी गई हैं। मुझे स्पष्ट है कि मुझे अपने सभी संग्रहीत डेटा पर अपडेट चलाने की आवश्यकता होगी या सुनिश्चित करें कि मेरे डोमेन क्लासेस पुराने प्रारूप रिकॉर्ड से निपटने के बारे में जानते हैं, लेकिन समय के साथ मैं कल्पना कर सकता हूं कि यह कक्षा अजीब हो रही है अगर किसी वर्ग को पता है कि कैसे निपटना है सभी संभावित रूप प्रारूप।क्या .NET में स्कीमालेस डेटाबेस के लिए कक्षाओं को डिजाइन करने के लिए कोई सामान्य पैटर्न हैं?

क्या मैं यह सोच रहा हूं? क्या यह ज्यादातर अच्छी रक्षात्मक प्रोग्रामिंग का उपयोग करने का मामला है?

+0

काफी नया विषय, अच्छा सवाल .. लेकिन शायद प्रोग्रामर.स्टैक एक्सचेंज डॉट कॉम पर है क्योंकि यह हल करने के लिए सामान्य "समस्या" बनाम प्रकृति में अधिक वैचारिक है। – NotMe

उत्तर

2
  1. आपके डेटा ऑब्जेक्ट्स में नई गुण जोड़ना आसान नहीं हो सकता है। आप बस उन्हें जोड़ें। जब तक आप डेटाबेस में मौजूद ऑब्जेक्ट के लिए इन गुणों के बारे में चिंता न करें, तो आपको कुछ भी करने की ज़रूरत नहीं है। यदि कुछ उपयोगकर्ता/मशीन आपके एप्लिकेशन के पुराने संस्करण का उपयोग करते हैं और आपकी कक्षा BsonIgnoreExtraElementsAttribute के साथ चिह्नित की गई थी, तो उन्हें उनके सॉफ़्टवेयर को अपडेट करने की आवश्यकता भी नहीं हो सकती है।
  2. अप्रचलित गुणों को हटाना आसान नहीं हो सकता है। आप बस उन्हें अपनी कक्षाओं में हटा दें। यदि आपकी कक्षा BsonIgnoreExtraElementsAttribute के साथ चिह्नित हैं, तो आपको अपने डेटाबेस में को भी हटाने की आवश्यकता नहीं है (उदाहरण के लिए, आपके उपयोगकर्ताओं के पास आपके ऐप के कई संस्करण हैं)।
  3. कक्षा गुणों का नामकरण करना भी आसान है। BsonElementAttribute कंस्ट्रक्टर का पैरामीटर है, इसलिए आप इसे डेटाबेस में सही संपत्ति नाम पर मैप कर सकते हैं।
  4. संपत्ति प्रकार बदलने से आपको अपने डेटा पर अपडेट चलाने की आवश्यकता हो सकती है। लेकिन गंभीरता से, आप उत्पादन में int के लिए स्ट्रिंग से संपत्ति प्रकार को कितनी बार बदलते हैं?

इसलिए कई मामलों में आपको अपने डेटा पर अपडेट चलाने की आवश्यकता नहीं होगी (जब तक कि आप डेटा प्रकार बदलते हैं या आपकी संपत्ति इंडेक्स को प्रभावित नहीं करती)। एक और मुद्दा यह है कि BsonIgnoreExtraElementsAttribute को जोड़ना अक्सर एक अच्छा अभ्यास होता है, खासकर यदि आप गुणों को जोड़ने और/या अक्सर हटाए जाने के बारे में चिंतित हैं। इस अभ्यास के बाद, आप "स्कीमालेसनेस" के लाभों का आनंद लेते हुए, रिकॉर्ड के सभी संस्करणों के साथ काम करने के लिए अपने आवेदन के पुराने और नए संस्करण प्रदान कर सकते हैं।

+0

मैं एक ही पंक्ति के साथ सोच रहा था, लेकिन चिंतित था कि यह इतना आसान नहीं हो सकता था। ऐसा लगता है कि ऐसा लगता है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^