10

के साथ कॉलम ऑर्डर को कैसे प्रभावित करें मैं इकाई फ्रेमवर्क 4.3 कोड का उपयोग कर रहा हूं और माइग्रेशन सुविधा का प्रयास कर रहा हूं।एंटिटी फ्रेमवर्क कोड प्रथम माइग्रेशन

अगर मैं अपने वर्ग के लिए नई प्रॉपर्टी जोड़ने और फिर पैकेज प्रबंधक कंसोल विंडो से ऐड-प्रवासन चलाने मैं कुछ इस तरह मिलती है:

public override void Up() 
    { 
     AddColumn("Products", "Discontinued", c => c.Boolean(nullable: false)); 
    } 

मैं के आदेश को प्रभावित करने में सक्षम होना चाहते हैं कॉलम के रूप में मैं नहीं चाहता कि इसे सिर्फ तालिका में जोड़ा जाए बल्कि एक विशिष्ट इंडेक्स पर रखा जाए। मैंने सोचा था कि मैं अपने modelBuilder विन्यास में जोड़ने के लिए सक्षम हो सकता है, की तरह कुछ:

Property(p => p.Discontinued).HasColumnOrder(2); 

लेकिन चल अद्यतन-डेटाबेस के लिए इसका इस्तेमाल करने के लिए प्रकट नहीं होता। क्या यह माइग्रेशन के रूप में किया जा सकता है?

+0

क) हैकिंग की एक बहुत कुछ कर बिना पिछले कॉलम में डालने के लिए कोई तरीका नहीं है, ख) आप रखने पदावनत नहीं किया जाना चाहिए "सॉफ्ट-डिलीट्स" का उपयोग कर अपने डेटाबेस में डेटा - बहिष्कृत डेटा संग्रहित करने में देखें। –

+0

विशिष्ट क्रम में डेटाबेस तालिका में कॉलम रखने का क्या मतलब है? यह सिर्फ एक डेटा भंडारण है। –

+1

सिर्फ सौंदर्य उद्देश्यों के लिए, यह सब कुछ है। जब आप मॉडल बिल्डर के साथ डेटाबेस बनाया जाता है तो आप इसे निर्दिष्ट कर सकते हैं, इसलिए बस माइग्रेशन के हिस्से के रूप में नया कॉलम जोड़ते समय यह संभव है। कोई बड़ी बात नहीं। – SteveB

उत्तर

5

यह केवल गायब कार्यक्षमता का मामला है। एसक्यूएल स्वयं कॉलम के किसी भी अंतर्निहित आदेश पर भरोसा नहीं करता है (कुछ अपवादों के साथ: ऑर्डर द्वारा, ...)।

न तो SQL सर्वर और न ही ORACLE के पास कॉलम को स्थानांतरित करने के लिए प्रत्यक्ष SQL DDL कमांड (उर्फ ALTER TABLE...) है।

इसलिए उच्च प्रयास किए बिना आदेश बदलने की कोई संभावना नहीं है (तालिका को फिर से बनाएं)। उदाहरण के लिए देखें

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