2012-06-24 7 views
6

जब मैं एक नई तालिका जोड़ता हूं जिसमें मेरे डेटाबेस में कुछ संबंध हैं और फिर Add-Migration चलाएं, तो मुझे लगता है कि तालिका और उसके संबंध जोड़ने के लिए Up विधि में कोड उत्पन्न होता है। हालांकि, मैं OnModelCreating विधि में धाराप्रवाह API का उपयोग करके संबंध परिभाषित करना पसंद करता हूं। इन दो तरीकों से कैसे बातचीत होती है? क्या मैं Up विधि से कोड हटा सकता हूं जो उदाहरण के लिए संबंध परिभाषित करता है?ऑनमोडेल क्रिएटिंग और गैर स्वचालित माइग्रेशन कैसे संबंधित हैं?

उत्तर

11

उनमें से प्रत्येक पूरी तरह से अलग उद्देश्य होता है:

  • OnModelCreating अपने मॉडल के इनलाइन धाराप्रवाह-एपीआई परिभाषा के लिए प्रयोग किया जाता है। डिफ़ॉल्ट परिभाषाओं के साथ इन परिभाषाओं, डेटा एनोटेशन और कॉन्फ़िगरेशन कक्षाएं मॉडल की पूरी परिभाषा बनाती हैं।
  • स्पष्ट प्रवास को परिभाषित करता है डेटाबेस के लिए क्या किया जाना चाहिए यह रूप अपने वर्तमान मॉडल

अब के लिए आवश्यक है, कैसे उन दो संबंधित विस्थापित करने के लिए? माइग्रेशन में दो इनपुट होते हैं जिनका उपयोग माइग्रेशन कोड (Up और Down विधियों) उत्पन्न करने के लिए किया जाता है। एक इनपुट डेटाबेस में __MigrationHistory तालिका में संग्रहीत अंतिम माइग्रेशन रिकॉर्ड है। इस रिकॉर्ड में डेटाबेस का प्रतिनिधित्व क्रमबद्ध मॉडल शामिल है। यह इनपुट वैकल्पिक है क्योंकि पहले माइग्रेशन को इसके बिना काम करना चाहिए। दूसरा इनपुट अनिवार्य है - यह आपका वर्तमान मॉडल है जो आपके वर्तमान असेंबली =>Add-Migration में कोड निष्पादित करके पुनर्प्राप्त किया गया है, वर्तमान मॉडल प्राप्त करने के लिए अपने OnModelCreating निष्पादित करेगा और डेटाबेस से पुनर्प्राप्त मॉडल के साथ इसकी तुलना करेगा। तुलनात्मक परिणाम में Up और Down विधियों की तुलना की परिणाम है।

+1

धन्यवाद! इसलिए, यदि मैं सही ढंग से समझता हूं कि 'उप' विधि में कोड 'ऑनमोडेल क्रिएटिंग' विधि में निर्धारित परिभाषाओं को प्रतिबिंबित करेगा (मान लीजिए कि आपने पाठ्यक्रम की धाराप्रवाह एपीआई परिभाषा लिखने के बाद माइग्रेशन जोड़ा है)। किसी को * ऊपर * से इन परावर्तित परिभाषाओं को हटा नहीं देना चाहिए। – Dabblernl

+0

हां यह सही है। –

संबंधित मुद्दे