EF Göçler: geri alma son uygulanan geçiş?
Bu çok yaygın bir görev gibi görünüyor, ama bunu yapmak için kolay bir yol bulamıyorum.
En son uygulanan geçiş geri almak istiyorum. Basit bir komut gibi beklerdim
PM> Update-Database -TargetMigration:"-1"
Bunun yerine, aklıma gelen tek şey:
PM> Get-Migrations
Retrieving migrations that have been applied to the target database.
201208012131302_Add-SystemCategory
201207311827468_CategoryIdIsLong
201207232247409_AutomaticMigration
201207211340509_AutomaticMigration
201207200025294_InitialCreate
PM> Update-Database -TargetMigration:"CategoryIdIsLong"
(En azından sadece adı, zaman damgası,...) atlama kullanabilirsiniz
Daha kolay bir yolu var mı?
CEVAP
Bu konuya biraz açıklık eklemek istiyorum:
Update-Database -TargetMigration:"name_of_migration"
Yukarıda ne yaptığını göç belirtilen kaldı KADAR tüm göçler geri almak istediğini söylüyor. Böylece, eğer kullandığınız AL-GÖÇLER ve bulduğunuz var A, B, C, D, E, sonra kullanarak bu komut geri alma E ve D için C:
Update-Database -TargetMigration:"C"
Herkesin aksine açıklama olmadıkça da, bir sıra değeri ve kısa vadeli Hedef anahtarını kullanabilirsiniz fark ettim (bu nedenle, -Hedef-TargetMigration) aynıdır. Geri almak için tüm göçler istiyorum ve yeniden başlamak, kullanabilirsiniz:
update-database -target:0
0, yukarıda, geri alma hatta İLK göç--sana bir şey yapamaz eğer kullandığınız yukarıdaki sözdizimi gerektirir adının hedef göç (adı 0 geçiş yok önce bir geçiş uygulanır!). Bu durumda, (sıralı) 0 değerini kullanın. Aynı şekilde, eğer uygulanan göçler A, B, C, D ve E (bu sırada), sonra sıra 1 olmalıdır bakın, sıra 2 olmalıdır başvurmak için B, ve benzeri. B işlemi için de kullanabilirsiniz:
Update-Database -TargetMigration:"B"
ya
Update-Database -TargetMigration:2
Varlık Çerçevesi Üzerinde Başlatma/Ger...
Saklı yordamları içeren geri alma dese...
Bir veritabanına tüm bağlantıları öldü...
Varlık çerçevesi varlıklar içinde yapı...
Çalışma kopyası Gıt değişiklikler bir ...