मैं अंतिम ऐड-माइग्रेशन कमांड को पूर्ववत कैसे करूं?


84

मैंने Add-Migrationकमांड का उपयोग करके एक माइग्रेशन बनाया है , लेकिन मैं उस माइग्रेशन का नाम बदलना चाहूंगा। मैं माइग्रेशन कमांड को पूर्ववत् कैसे कर सकता हूं, ताकि मैं इसे नए वांछित नाम का उपयोग करके पुनर्जीवित कर सकूं?

क्या यह केवल उत्पन्न फ़ाइलों को हटाने की बात है, या यह एक बुरा विचार हो सकता है?

जवाबों:


137

यदि आपने उपयोग नहीं किया है Update-Databaseतो आप माइग्रेशन फ़ाइल को हटा सकते हैं। यदि आपने अपडेट चलाया है तो आपको इसे वापस रोल करके उपयोग करना चाहिए Update-Database -TargetMigration "NameOfPreviousMigration"फिर माइग्रेशन फ़ाइल को हटा दें।

संदर्भ:

http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/


क्या होगा अगर यह पहला माइग्रेशन जोड़ा गया?
— जिमिती

@ Jimmyt1988, अपडेट-डेटाबेस -टार्गेट माइग्रेशन का उपयोग करें: $ InitialDatabase
— Seraphim

फिर इसे हटा दें? मुझे नहीं मिला। फिर हटाएं क्या?
— tnk479

@ tnk479 माइग्रेशन फ़ाइल। इसे स्पष्ट करने के लिए संपादित किया गया
— कॉलिन

दुख की बात है कि EF के पुराने संस्करण (EF 6 की तरह) के पास नहीं है drop-databaseऔर remove-migrationआज्ञा देता है
— Hamza Khanzada

15

यदि आपने अभी तक माइग्रेशन निष्पादित नहीं किया है Update-Database, तो आप मचान को फिर से निष्पादित करने के Add-Migrationलिए एक ही नाम (आपको उपयोग करने की आवश्यकता हो सकती है -Force) के साथ फिर से चला सकते हैं । यह Add-Migrationकमांड के आउटपुट में नोट किया गया है ।


यह एक अच्छा समाधान नहीं है क्योंकि यह ApplicationDbContextModelSnapshot
— Trojaner

@ ट्रोजनर आप सही हैं, इसलिए प्रतिक्रिया stackoverflow.com/a/46921867/690958 बेहतर समाधान है
— अल्बर्टो लियोन

क्या यह फाइलों को भी साफ कर सकता है? मेरे लिए यह माइग्रेशन फ़ाइल को छोड़ देता है, लेकिन खाली अप () और डाउन () विधियों के साथ।
— दिमित्री करपेंको

12

बस कमांड का उपयोग करें

Remove-migration

यह अंतिम जोड़े गए माइग्रेशन को हटा देगा और स्नैपशॉट को अपडेट कर देगा। यह डेटाबेस को प्रभावित नहीं करेगा, इसलिए आपको पहली बार में db को रोलबैक करना होगा।


5
केवल ईएफ कोर में।
— जॉन

मैं चाहता हूँ उसके साथ एफई 6 में होगा drop-databaseआदेशों .. मैं भी इसकी आदत हूँ
— हमजा खानजादा

4

EntityFrameworkCore 2.0 के साथ मॉडल स्नैपशॉट आता है। मॉडल स्नैपशॉट को अपडेट करने के लिए आपको निकालें माइग्रेशन कमांड को चलाने की आवश्यकता होगी। मैंने पढ़ा है कि EF Core किसी भी अपडेट को पहचान लेगा और यदि आप मैन्युअल रूप से माइग्रेशन को हटा देते हैं तो यह आपके लिए स्नैपशॉट को वापस कर देगा लेकिन इसने मेरे लिए काम नहीं किया है।

https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations

https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/dotnet#dotnet-ef-migrations-remove


3

@Ben के उत्तर में जोड़ने के लिए, dotnet efकमांड की विविधता का उपयोग करते समय यह आपके लिए आवश्यक कमांड है:

dotnet ef migrations remove

जो आपके पिछले माइग्रेशन को हटा देगा और मॉडल स्नैपशॉट को अपडेट कर देगा।



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.