मेरे लिए, चाहे आप एकल-पंक्ति में जाएं या ईएवी इस बात पर निर्भर करता है कि आप उनका उपभोग कैसे करना चाहते हैं।
ईएवी की शक्ति यह है कि संरचना में कोई बदलाव नहीं करने के साथ नया डेटा जोड़ा जा सकता है। इसका मतलब यह है कि यदि आप एक नया कॉन्फ़िगरेशन मान चाहते हैं, तो आप इसे केवल तालिका में जोड़ें और इसे बाहर निकालें जहां आप इसे कोड में चाहते हैं, और आपको डोमेन, स्कीमा, मैपिंग, DAL क्वेरी में एक नया फ़ील्ड जोड़ने की आवश्यकता नहीं है , आदि।
इसका दोष यह है कि इसमें केवल सबसे बैस्ट स्ट्रक्चर है, जिससे आपको डेटा के साथ निराशावादी व्यवहार करने की आवश्यकता होती है। किसी भी कॉन्फ़िगरेशन मान के प्रत्येक उपयोग के लिए मान मौजूद नहीं होने, या उचित प्रारूप में नहीं होने की अपेक्षा करनी चाहिए, और जब ऐसा नहीं होता है तो तदनुसार व्यवहार करें। एक विन्यास मूल्य एक डबल, या एक इंट, या एक चार के लिए पार्स करने योग्य नहीं हो सकता है। यह अशक्त हो सकता है। मूल्य के लिए कोई पंक्ति नहीं हो सकती है। इसके आस-पास के तरीकों को आमतौर पर किसी विशेष-कोड प्रकार के सभी कॉन्फ़िगरेशन मूल्यों के लिए मौजूद होने के लिए एक एकल मान्य "डिफ़ॉल्ट" मान की आवश्यकता होती है ( अत्यंत दुर्लभ; अक्सर डिफ़ॉल्ट मान कोड के रूप में उपभोग करने के लिए समस्याग्रस्त होता है) या बिल्कुल भी नहीं; डिफ़ॉल्ट मानों का एक हार्डकोड शब्दकोश रखें (जिसे हर बार एक नया कॉलम जोड़ा जाना चाहिए, जिससे ईएवी भंडारण सुंदर लूट का प्राथमिक लाभ होगा)।
एक एकल चौड़ी पंक्ति बहुत विपरीत है। आप इसे किसी कॉन्फ़िगरेशन ऑब्जेक्ट के एकल उदाहरण के लिए अस्तित्व में प्रत्येक कॉन्फ़िगरेशन मान के लिए फ़ील्ड / प्रॉपर्टी के साथ मैप करते हैं। आपको पता है कि संकलित समय में उन मानों को किस प्रकार का होना चाहिए, और DAL में आप "तेजी से विफल" होते हैं यदि एक कॉन्फ़िगर कॉलम मौजूद नहीं है या उचित प्रकार का मूल्य नहीं है, तो आपको अपवादों को पकड़ने के लिए एक जगह देनी होगी कॉन्फ़िगरेशन पुनर्प्राप्ति / जलयोजन समस्याओं पर।
मुख्य नुकसान यह है कि प्रत्येक नए मूल्य के लिए एक संरचनात्मक परिवर्तन आवश्यक है; नए DB कॉलम, DAL में नया कॉलम (या तो मैपिंग या SQL क्वेरीज़ / SPs), नया डोमेन कॉलम, सभी को ठीक से उपयोग करने के लिए आवश्यक है।
इनमें से किसी एक का उपयोग करने की उचित स्थिति वह स्थिति है जिसमें नुकसान को कम किया जाता है। मेरे लिए, कॉन्फ़िगर कोडिंग के लिए अधिकांश स्थितियों ने एकल-पंक्ति कार्यान्वयन के लिए कॉल किया है। यह मुख्य रूप से है क्योंकि यदि आप एक पूरी तरह से नए कॉन्फ़िगरेशन मान का परिचय दे रहे हैं जो आपके प्रोग्राम के कुछ हिस्से के व्यवहार को नियंत्रित करता है, तो आपको नए कॉन्फ़िगरेशन मान का उपयोग करने के लिए पहले से ही कोड को बदलना होगा ; कॉन्फ़िगर ऑब्जेक्ट पर पॉप क्यों नहीं किया जाता है और उपयोग किए जाने के लिए मूल्य जोड़ें ?
संक्षेप में, विन्यास को स्टोर करने के लिए एक ईएवी स्कीमा वास्तव में उस समस्या को हल नहीं करता है जो इसे हल करने के लिए करता है, और अधिकांश वर्कआर्ड्स उन समस्याओं को हल करता है जो DRY का उल्लंघन करता है।