स्थिति यह है कि मेरे पास एक सारणी है जो एक इकाई को मॉडल करती है। इस इकाई में कई गुण हैं (प्रत्येक तालिका में कॉलम द्वारा पहचाना जाता है)। बात यह है कि भविष्य में मुझे नई संपत्तियां जोड़ने या कुछ गुणों को हटाने की आवश्यकता होगी। समस्या यह है कि डेटाबेस और संबंधित कोड दोनों (सी # का उपयोग करके) को मॉडल कैसे करें ताकि जब ऐसा अवसर दिखाई दे तो यह एक नई संपत्ति "बस" होना बहुत आसान होगा।जेनिक्स और डेटाबेस - एक डिजाइन समस्या
शुरुआत में केवल एक ही संपत्ति थी इसलिए मेरे पास एक कॉलम था। मैंने उचित प्रकार और नाम के साथ कक्षा में संबंधित संपत्ति को परिभाषित किया, फिर इसे पढ़ने और इसे अपडेट करने के लिए संग्रहित प्रक्रियाएं बनाईं। फिर दूसरी संपत्ति आई, जल्दी से कॉपी-पेस्ट किया गया, नाम बदल गया और टाइप और एसक्यूएल का थोड़ा सा और वहां था। जाहिर है यह एक उपयुक्त मॉडल आगे नहीं जा रहा है। इस समय तक आप में से कुछ ओआरएम (ईएफ या अन्य) का सुझाव दे सकते हैं क्योंकि यह स्वचालित रूप से एसक्यूएल और कोड उत्पन्न करेगा लेकिन अभी के लिए यह मेरे लिए एक विकल्प नहीं है।
मैंने एक संपत्ति (संपत्ति के नाम से) पढ़ने के लिए केवल एक प्रक्रिया होने का विचार किया और दूसरा इसे अपडेट करने के लिए (नाम और मूल्य से) तो एक ही बयान में एक इकाई के लिए एक गुच्छा या सभी गुणों को पढ़ने के लिए कुछ सामान्य प्रक्रियाएं । यदि आप जेनेरिक का उपयोग करने पर विचार करते हैं तो यह सी # में आसान लग सकता है लेकिन डेटाबेस जेनेरिक नहीं जानता है, इसलिए मजबूत टाइप किए गए समाधान के लिए संभव नहीं है।
मैं एक ऐसा समाधान करना चाहता हूं जो "यथासंभव दृढ़ता से टाइप किया गया" है, इसलिए मुझे बहुत सारे कास्टिंग और पार्सिंग करने की आवश्यकता नहीं है। मैं कोड में उपलब्ध गुणों को परिभाषित करता हूं ताकि आप जो उपलब्ध कर रहे हैं उसका आकलन न करें और जादू तारों और इसी तरह का उपयोग करें। फिर सिस्टम में एक नई संपत्ति जोड़ने की प्रक्रिया का मतलब केवल तालिका में एक नया कॉलम जोड़ना होगा और कोड में एक नई संपत्ति "परिभाषा" जोड़ना होगा (उदाहरण के लिए एक enum में)।
आप ईएफ का उपयोग क्यों नहीं कर सकते? माइक्रोसॉफ्ट में प्रतिभाओं ने पहले ही इस बारे में पता लगाया है और आपके लिए बहुत सारे काम किए हैं। मैं आपको पहिया का पुन: आविष्कार देखने से नफरत करता हूं। – Jay
हाँ, मुझे समझ में नहीं आता कि आपको ओआरएम से बचने की आवश्यकता क्यों है। (साथ ही, मुझे नहीं पता कि सी # जेनेरिक को इनमें से किसी के साथ क्या करना है) –
मैं सहमत हूं लेकिन ईएफ आर्किटेक्चर के संबंध में सड़क से थोड़ी दूर है इसलिए मैं इसका अभी तक उपयोग नहीं कर सकता। – CyberDude