मैंने कुछ समय पहले निम्नलिखित लिखा था, लेकिन मैं हाल ही में इसकी समीक्षा करने आया हूं, और अब मुझे नहीं लगता कि यह अच्छा डिज़ाइन है।
डिजाइन एंटिटी फ्रेमवर्क का उपयोग करते हुए एक तरह के मॉड्यूलर डेटाबेस लेयर के लिए है। एक एकल डेटाबेस ऑब्जेक्ट है जो एक निर्धारित स्थान पर बाहरी पुस्तकालयों से लोड (आलसी) इकाई फ्रेमवर्क संदर्भों को लोड करता है, और लोड किए गए संदर्भों के उदाहरणों को एक हैश तालिका में संग्रहीत किया जाता है। उनका नाम (उदा "ContentMgmtContext")।
इस प्रणाली में डेटाबेस के साथ सभी संपर्क संग्रहीत प्रक्रियाओं के माध्यम से है। डेटाबेस पर कॉल करने के लिए, क्वेरी विधि हस्ताक्षर इस तरह दिखता है:
List<TReturn> Query<TReturn>(string Context,
string Procedure,
TransactionScope Scope,
List<ObjectParameter> QueryParameters)
यह मॉड्यूलरिटी मुझे पसंद है। हालांकि, इस दृष्टिकोण में एक महत्वपूर्ण कमी है: when using the database layer, the code using it has to have a reference to the library in which the context is stored, in order to access the types returned by the stored procedures through Entity Framework.
मॉडल में, डेटाबेस लेयर से ऑब्जेक्ट्स को नए ऑब्जेक्ट्स में अनुवादित किया जाता है जिसे व्यू और कंट्रोलर उपयोग करते हैं।
मुझे लगता है कि यह खराब डिजाइन है, लेकिन मैं इसे कैसे सुधार सकता हूं? मैंने एक खाली इंटरफ़ेस को जोड़ने पर विचार किया है जैसे IStoredProecedureObject
कि संग्रहित प्रक्रिया द्वारा लौटाए गए प्रत्येक डेटा प्रकार को एक सामान्य आधार प्रकार दिया जाता है, हालांकि यह एंटोनियो फ्रेमवर्क द्वारा ठीक किया गया प्रतीत होता है। हर बार जब .edmx
फ़ाइल को फिर से जोड़ा जाता है, तो कोड नए सिरे से बनाया जाता है, और किसी भी अतिरिक्त को हटा दिया जाता है। क्या ऐसा होने से रोकने का कोई तरीका है?
मैं इस डिज़ाइन को कैसे सुधार सकता हूं? क्या (और) इसके साथ गलत है? या मैं सही रास्ते पर हूँ?