Varlık Çerçevesi - Baştan Başla - Tüm Taşıma İşlemlerini Geri Al / Geri Al


168

Nedense, göçlerim karışık / bozuk / her neyse. Sadece baştan başlamak istediğim noktadayım, bu yüzden tüm geçişleri tamamen geri almanın, geçmişi silip geçiş kodunu silmenin bir yolu var, bu yüzden bir kareye geri döndüm?

Örneğin) PM> Disable-Migrations veyaRollback-Migrations

Orijinal bir geçiş adımına (yani InitialSchemahedef gibi bir şey ) "güncellemek" istemiyorum çünkü artık bulamıyorum.

Yanıtlar:


358

Aşağıdakileri kullanarak herhangi bir taşıma işlemine geri dönebilirsiniz:

Update-Database -TargetMigration:"MigrationName"

Kullanabileceğiniz tüm taşıma işlemlerini geri almak istiyorsanız:

Update-Database -TargetMigration:0

veya eşdeğer:

Update-Database -TargetMigration:$InitialDatabase 

Bazı durumlarda, veritabanını ve tüm geçiş sınıflarını da silebilirsiniz.


7
her zamanki gibi sen en iyisisin
drzaus

2
Anlamıyorum, OP özellikle "Artık bulamıyorum çünkü orijinal bir geçiş adımına (yani InitialSchema hedefi gibi bir şey)" güncellemek istemiyorum "diyor. Bu cevap istediğini nasıl yapıyor? Gerçekleşmesini beklediğim şey, enable-migrationstekrar yapmak zorunda olduğum bir durumda olacağımdı . Bunlar açıkçası faydalıdır, ancak OP'nin istediklerini gerçekleştirirler mi? (Lütfen "iyi, cevabı kabul etti" diye cevap vermeyin. Bunu anlamaya çalışıyorum, zeki değil.)
Michael Blackburn

@MichaelBlackburn: enable-migrationsTekrar çalıştırmak istiyorsanız ve sıfırdan veritabanı geliştiriyorsanız, sadece son cümleyi takip etmeniz gerekir: Veritabanını ve tüm geçişle ilgili kodu silin. Mevcut veritabanıyla taşıma işlemlerini kullanmaya başladıysanız, önce ikinci veya üçüncü komutu kullanarak tüm taşıma işlemlerini geri almanız, ardından MigrationHistorytabloyu ve taşıma işlemiyle ilgili tüm kodu silmeniz gerekir . Sizi başlangıç ​​pozisyonuna getirmelidir. Veritabanını yedeklemeden (taşıma işlemlerini kullanmadan önce) alabilir ve taşıma ile ilgili tüm kodu silebilirsiniz.
Ladislav Mrnka

4
@MichaelBlackburn: Demek istediğim, gördüğüm diğer tüm çözümlerin ilk adlandırılmış geçişinize geri güncellemenizi söylediği , ancak benim sorunum, güncellemek için ilk temiz geçişin olmamasıydı. yönteme bakılmaksızın tüm göçlerden kurtulmak istedim. Bu nedenle bu cevap endişemi -TargetMigration:0
giderdi


8

Açık olmak gerekirse, LocalDb kullanıyorsanız, sıfırdan başlamak istediğinizde veritabanını Veritabanı Gezgini aracılığıyla silin enable-migrations -forceve Paket Yöneticisi Konsolu'nu yazın. Veritabanını App_Data klasörü aracılığıyla silmeyin, aksi takdirde aşağıdaki sorunla karşılaşırsınız .


2
Uyarı yaparken Migrations \ Configuration.cs dosyanızın üzerine yazacağı için bunu yaparken dikkatli olun!
cgatian

Uyarı için teşekkürler, ben hemen hemen bir süre sonra ilk yolu kodu düştü, bir kez tüm kod sahip olmak güzel, yer, kendi başına veritabanı için kaynak kontrol sürümüne sahip ama ben başka büyük yarar görmedim ve önce veritabanına geri döndü. Tüm deltaları takip etmek için Red Gate Sql Compare'i kullanıyorum.
Brian Ogden


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.