ठीक है, अब मैं एक दिन के लिए इस के साथ संघर्ष कर दिया गया है, और यहाँ जवाब लेने वालों के लिए समाधान है ...
मैं यह सोचते हैं हूँ ज्यादातर लोगों इस पोस्ट को पढ़ने के यहाँ हैं कि क्योंकि वे एक बड़े DbContext है बहुत सारे DbSet <> गुणों के साथ वर्ग और लोड करने में लंबा समय लगता है। आपने शायद खुद को सोचा, जी, यह समझ में आता है, मुझे संदर्भ को विभाजित करना चाहिए, क्योंकि मैं एक ही समय में सभी dbsets का उपयोग नहीं करूँगा, और मैं केवल उस स्थिति के आधार पर "आंशिक" संदर्भ लोड करूंगा जहां मुझे चाहिए यह। तो आप उन्हें विभाजित करते हैं, केवल यह पता लगाने के लिए कि कोड प्रथम माइग्रेशन क्रांतिकारी सोच के आपके तरीके का समर्थन नहीं करते हैं।
तो आपका पहला कदम संदर्भों को विभाजित कर रहा होगा, फिर आपने प्रत्येक नए संदर्भ के लिए माइग्रेशन कॉन्फ़िगरेशन क्लास जोड़ा है, आपने कनेक्शन स्ट्रिंग्स को अपने नए संदर्भ वर्गों के समान ही जोड़ा है।
तो फिर तुम एक के बाद हाल में अलग संदर्भों एक चल रहा करने की कोशिश की, कर ऐड-प्रवासन Context1 तो कर अद्यतन-डाटाबेस -verbose द्वारा ...
सब कुछ ठीक काम करने के लिए लग रहा था, लेकिन तब आपको लगता है कि बाद के हर नोटिस माइग्रेशन ने पिछले माइग्रेशन से सभी टेबल हटा दिए, और केवल अंतिम माइग्रेशन से टेबल को छोड़ दिया।
ऐसा इसलिए है क्योंकि वर्तमान माइग्रेशन मॉडल प्रति डाटाबेस सिंगल डीबीकॉन्टेक्स्ट की अपेक्षा करता है, और इसे दर्पण मैच होना चाहिए।
मैंने जो भी कोशिश की, और किसी ने ऐसा करने का सुझाव दिया, वह एक सुपरकॉन्टेक्स्ट बना रहा है, जिसमें सभी डीबी सेट हैं। एक माइग्रेशन कॉन्फ़िगरेशन क्लास बनाएं और इसे चलाएं। अपनी आंशिक संदर्भ कक्षाओं को जगह पर छोड़ दें, और उन्हें तुरंत इंस्टॉल करने और उनका उपयोग करने का प्रयास करें। ईएफ शिकायत करता है कि बैकिंग मॉडल बदल गया है। दोबारा, ऐसा इसलिए है क्योंकि ईएफ आपके आंशिक dbcontext को ऑल-सेट संदर्भ हस्ताक्षर से तुलना करता है जो आपके सुपर संदर्भ माइग्रेशन से छोड़ा गया था।
यह मेरी राय में एक प्रमुख दोष है।
मेरे मामले में, मैंने निर्णय लिया कि प्रवास माइग्रेशन से अधिक महत्वपूर्ण है। तो, मैं क्या कर रहा था, सुपर संदर्भ में भाग लेने के बाद और सभी तालिकाओं की जगह थी, मैं डेटाबेस में गया और मैन्युअल रूप से हटाया _MigrationHistory तालिका।
अब, मैं इसके बारे में शिकायत किए बिना अपने आंशिक संदर्भों को तत्काल और उपयोग कर सकता हूं। यह माइग्रेशन हिस्ट्री टेबल नहीं ढूंढता है और बस मुझे आगे बढ़ता है, जिससे मुझे डेटाबेस का "आंशिक" दृश्य मिल जाता है।
व्यापार बंद यह है कि मॉडल में किसी भी बदलाव को मैन्युअल रूप से डेटाबेस में प्रचारित करना होगा, इसलिए सावधान रहें।
हालांकि यह मेरे लिए काम करता था।
यह बहुत ही रोचक सवाल है। मुझे आश्चर्य है कि एकाधिक संदर्भ समर्थन माइग्रेशन उपयोग मामलों का हिस्सा था। –
मुझे अत्यधिक संदेह है कि बहु संदर्भ ऑटो माइग्रेशन के साथ काम कर सकते हैं, यह डीबी को अद्यतन करने के लिए डिज़ाइन किया गया है, संदर्भ के समान दिखने के लिए। माइग्रेशन उत्पन्न करने के लिए अलग-अलग डेटाबेस के खिलाफ, मैन्युअल माइग्रेशन का उपयोग करके प्लगइन विकसित करने के लिए आपके पास अधिक भाग्य हो सकता है, फिर उन्हें सभी को उसी डीबी पर लागू करें। – Betty
इस बीच में मैंने ईएफ 4.3 असेंबली में देखा, और मुझे यह भी संदेह है कि माइग्रेशन फ्रेमवर्क कई संदर्भों का सामना कर सकता है। लेकिन कोई तकनीकी कारण नहीं है जिसके बारे में मैं सोच सकता हूं। एक ईडीएम-मॉडल के साथ आप अलग-अलग हो सकते हैं कि डेटाबेस के खिलाफ मौजूदा टेबल टेबल बनाने या बदलने और उपयोगकर्ता को मैन्युअल माइग्रेशन द्वारा हटाए गए परिदृश्य को छोड़ दें। –