मैं 1000+ तालिकाओं के साथ SQL सर्वर डेटाबेस के साथ काम कर रहा हूँ, कुछ सौ विचार, और कई हजार संग्रहीत कार्यविधियाँ। हम अपनी नई परियोजनाओं के लिए एंटिटी फ्रेमवर्क का उपयोग शुरू करना चाहते हैं, और हम ऐसा करने के लिए अपनी रणनीति पर काम कर रहे हैं। मैं जिस चीज पर लटका हुआ हूं वह यह है कि तालिकाओं को अलग-अलग मॉडल (EDMX या DbContext में विभाजित किया जाए तो सबसे अच्छा है कि हम कोड कहां जाएं)। मैं बल्ले से कुछ रणनीतियों के बारे में सोच सकता हूं:
- स्कीमा द्वारा
विभाजित हमारे पास हमारे टेबल शायद एक दर्जन स्कीमाओं में विभाजित हैं। हम स्कीमा प्रति एक मॉडल कर सकते हैं। यह सही नहीं है, हालांकि, क्योंकि अभी भी dbo 500+ तालिकाओं / विचारों के साथ बहुत बड़ा है। एक अन्य समस्या यह है कि काम की कुछ इकाइयाँ कई मॉडल का लेनदेन करने वाले लेनदेन को समाप्त कर देंगी, जो जटिलता में जोड़ता है, हालांकि मुझे लगता है कि ईएफ इसे काफी सरल बनाता है। - इरादे से
विभाजित करें स्कीमा के बारे में चिंता करने के बजाय, इरादे से मॉडल को विभाजित करें। इसलिए हमारे पास प्रत्येक एप्लिकेशन, या प्रोजेक्ट, या मॉड्यूल या स्क्रीन के लिए अलग-अलग मॉडल होंगे, यह इस बात पर निर्भर करता है कि हम किस प्रकार का दाना प्राप्त करना चाहते हैं। मैं इसके साथ जो समस्या देख रहा हूं, वह यह है कि कुछ निश्चित तालिकाएँ हैं, जिन्हें अनिवार्य रूप से हर मामले में उपयोग किया जाना है, जैसे कि उपयोगकर्ता या ऑडिटहिस्टोर। क्या हम उन्हें हर मॉडल में जोड़ते हैं (DRY I think का उल्लंघन करता है), या वे एक अलग मॉडल में हैं जो हर प्रोजेक्ट के द्वारा उपयोग किया जाता है? - बिल्कुल भी विभाजित न करें - एक विशाल मॉडल
यह स्पष्ट रूप से एक विकास के दृष्टिकोण से सरल है, लेकिन मेरे शोध और मेरे अंतर्ज्ञान से ऐसा लगता है कि यह बहुत अच्छा प्रदर्शन कर सकता है, दोनों डिजाइन समय पर, संकलन समय, और संभवतः समय चला सकते हैं।
इतने बड़े डेटाबेस के खिलाफ ईएफ का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है? विशेष रूप से डीबी ऑब्जेक्ट्स के इस वॉल्यूम के खिलाफ मॉडल डिजाइन करने में लोग किन रणनीतियों का उपयोग करते हैं? क्या ऐसे विकल्प हैं जो मैं उस काम के बारे में नहीं सोच रहा हूं जो मैंने ऊपर दिया है?
इसके अलावा, क्या एनएचबीर्नेट जैसे अन्य ओआरएम में यह समस्या है? यदि ऐसा है तो वे ईएफ की तुलना में किसी भी बेहतर समाधान के साथ आए हैं?