Saya menambahkan migrasi baru tetapi pesan ini menunjukkan:
Tidak dapat membuat migrasi eksplisit karena migrasi eksplisit berikut tertunda: [201203170856167_left]. Terapkan migrasi eksplisit tertunda sebelum mencoba membuat migrasi eksplisit baru.
Ada yang bisa bantu saya?
entity-framework
ef-migrations
Noman Saeed
sumber
sumber
Jawaban:
Ini memberi tahu Anda bahwa ada beberapa migrasi yang belum diproses dalam aplikasi Anda dan perlu dijalankan
Update-Database
sebelum Anda dapat menambahkan migrasi lain.sumber
-StartupProject ContentHub.Database
Update-Database
memberikan> Tidak dapat memperbarui database agar sesuai dengan model saat ini karena ada perubahan yang tertundaSaya memiliki masalah yang sama. Rupanya kerangka kerja entitas menghasilkan kesalahan ini ketika tidak dapat terhubung ke database. Jadi, pastikan Anda dapat mengaksesnya sebelum mencari masalah lain.
sumber
Anda juga perlu menjalankan "update-database" dari konsol pengelola paket untuk mendorong perubahan Anda ke database ATAU Anda dapat menghapus file migrasi yang tertunda ([201203170856167_left]) dari folder Migrasi Anda dan kemudian menjalankan kembali "add-migrasi" ke buat migrasi baru berdasarkan hasil edit Anda.
sumber
Kesalahan ini juga bisa berarti bahwa migrasi tidak dikenali lagi. Ini terjadi pada saya setelah mengubah nilai ContextKey di Migrations.Configuration. Solusinya cukup dengan memperbarui ContextKey di tabel database "__MigrationHistory" (atau mengembalikan nilai di kelas Konfigurasi, kurasa). ContextKey dan Namespace di aplikasi Anda harus cocok.
sumber
1. String Koneksi / Izin Koneksi
Periksa lagi string koneksi.
Pastikan pengguna yang Anda hubungi masih memiliki izin untuk membaca
[__MigrationHistory]
dan memiliki izin untuk mengedit skema.Anda juga dapat mencoba mengubah string koneksi di file konfigurasi Aplikasi atau Web untuk menggunakan Keamanan Terintegrasi (Windows Auth) untuk menjalankan perintah tambahkan migrasi sebagai diri Anda sendiri .
Sebagai contoh:
String koneksi ini akan masuk ke file App.config dari proyek tempat DbContext berada.
2. Proyek StartUp
Anda dapat menentukan proyek StartUp pada baris perintah atau Anda dapat mengklik kanan proyek dengan folder
DbContext
,Configuration
dan Migrasi, lalu memilih Setel sebagai proyek StartUp . Saya serius, ini sebenarnya bisa membantu.sumber
Integrated Security
perbaikannya bekerja dengan baik!Memiliki masalah yang sama dan dapat menyelesaikannya dengan beberapa petunjuk dari jawaban di atas:
Gunakan "update-database -verbose" di konsol pengelola paket untuk mendapatkan informasi yang lebih spesifik tempat migrasi mencoba untuk terhubung. (Membantu dalam kasus saya untuk mengetahui proyek startup saya tidak disetel dengan benar ...)
sumber
Jika Anda belum pernah menggunakan
Update-Database
Anda bisa menghapusnya. Jika Anda telah menjalankan pembaruan, putar kembali menggunakanUpdate-Database -TargetMigration "NameOfPreviousMigration"
, lalu hapus.Referensi: http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/
Saya menyalin teks ini langsung dari sini: Bagaimana cara membatalkan perintah Add-Migration terakhir?
sumber
Saat mengalami masalah ini, coba tambahkan parameter ke cmdlet migrasi tambahan Anda. Misalnya, menentukan proyek start up serta nama string koneksi dapat membantu EF menemukan database target Anda.
Dimana:
Delta_Defect_0973 adalah nama migrasi Anda
your.namespace.ContextClassName adalah nama kelas Konfigurasi Anda di folder migrasi, diawali dengan ruang nama lengkap.
DeltaProject adalah nama proyek utama Anda dengan file web.config atau app.config Anda.
DeltaSQL adalah nama string koneksi Anda yang ditentukan di file web.config atau app.config Anda.
sumber
Kesalahan ini berarti ada migrasi yang menunggu yang harus dilakukan sebelum Anda dapat menjalankan migrasi eksplisit lainnya. Anda dapat memilih untuk
Setelah ini, Anda dapat memulai lagi "Add-Migration ..."
Semoga membantu
sumber
Hanya dua sen saya:
Skenario saya:
Larutan:
Untuk menyiasati ini, saya hanya memberikan parameter yang lebih eksplisit:
Saya yakin bahwa Anda dapat menetapkan pengaturan di folder app.config Anda untuk memungkinkan Anda menetapkan perilaku ini secara default sehingga Anda tidak perlu memberikan parameter eksplisit setiap saat. Namun saya tidak yakin bagaimana melakukan ini.
sumber
-ConnectionStringName
adalah alternatif untuk ini, dan akan menarik string koneksi dari konfigurasi Anda dengan namaAda ambiguitas dan kesalahan. Cara terbaik adalah dengan mengecualikan file migrasi saat ini dan membuat file migrasi baru ( tambahkan-migrasi ) dan kemudian menyalin konten migrasi baru ke file yang dikecualikan dan memasukkannya lagi dan menjalankan perintah update-database .
sumber
update-database
perintah kemudian mencoba kembaliadd-migration
perintah saya dan berhasilsaya memecahkan masalah yang sama seperti ini:
sumber
Saya memiliki masalah yang sama dan hanya bisa menyelesaikannya dengan menjalankan Add-Migration 'MigrationName' -Force
Dengan -Force menjadi bagian penting.
sumber
Database lokal saya tidak berisi
__MigrationHistory
, atau sudah ada. Saya membuat tabel secara manual, lalu memigrasikan data dalam tabel itu dari PROD ke database lokal saya. Hal ini menyebabkan VS berpikir bahwa migrasi telah diterapkan (yang telah mereka lakukan).sumber
Tips: Sebaiknya gunakan
-Script
sakelar untuk perintah migrasi jika Anda tidak yakin. Ini juga sangat membantu memahami apaUpdate-Database
sebenarnya dilakukan.Saya menjalankan perintah berikut untuk memperbarui database, kemudian saya mendapatkan skrip yang dapat saya terapkan secara manual (atau jalankan lagi tanpa tag -Script).
Karena
Update-Database
saya akan menjalankan yang berikut ini:Update-Database -Script -ConfigurationTypeName Configuration_ASPNETIdentity -ConnectionStringName SQL_AzureLive
Dimana
SQL_AzureLive
string koneksi bernama di konfigurasi saya.Kemudian saya dapat memverifikasi SQL terlihat benar, menerapkannya dan selesai. Seperti yang dikatakan banyak orang lain jika string koneksi salah atau tidak valid, Anda akan mendapatkan kesalahan ini.
sumber
Bagi saya, saya menghapus file migrasi (dalam kasus Anda "201203170856167_left") dari
Migrations
folder, dan kemudian menjalankan perintah di bawah ini di konsol Package Managersumber
Skenario
Masalah
Setelah memperbarui dari master, saya menjalankan "Add-Migration my_migration_name", tetapi mendapatkan kesalahan berikut:
Jadi, saya menjalankan "Update-Database" dan mendapatkan error berikut:
Larutan
Pada titik ini menjalankan kembali "Add-Migration my_migration_name" memecahkan masalah saya. Teori saya adalah bahwa menjalankan "Update-Database" mendapatkan semua yang dibutuhkan untuk "Add-Migration" untuk bekerja.
sumber
Saya juga menemukan masalah ini. Itu terjadi ketika saya membuat DB baru dan saya memiliki perubahan tertunda untuk migrasi kode pertama DB saya, lalu saya mencoba menjalankan perintah "Perbarui-Database". Solusi: Jalankan perintah "Add-Migration -MigrationName" untuk membuat migrasi baru untuk DB baru. Kemudian jalankan perintah "Update-Database".
sumber
Saya mengalami masalah ini juga karena database yang saya tahu adalah yang terbaru saat menjalankan Add-Migration. Dipecahkan hanya dengan menjalankan perintah Add-Migration untuk kedua kalinya. Curigai masalah konektivitas, seperti yang disarankan oleh Robin Dorbell di atas.
sumber
Itu terjadi ketika saya tiba-tiba mengganti nama kelas migrasi lama yang sudah ada di db. Saya memeriksa riwayat VCS, menentukannya dan mengganti namanya kembali. Semua bekerja setelah itu.
sumber
Saya melakukan cara lain. Saya menghapus database sepenuhnya dan menjalankan "update-database" lagi dalam vs.
sumber
Saya punya masalah yang lebih sederhana. VS secara keliru melaporkan kesalahan ini ketika saya memiliki koneksi VPN ke situs klien yang terhubung di workstation saya. Masalahnya adalah keamanan DBMS diatur untuk menerima permintaan hanya dari IP lokal saya yang sebenarnya. Cukup mematikan VPN sudah menyelesaikan masalah.
sumber
Dalam kasus saya, saya lupa menambahkan alamat IP saya di aturan firewall di Azure, pada dasarnya karena saya tidak dapat terhubung ke database, saya mendapatkan kesalahan ini. Jadi khusus untuk kasus saya, saya menambahkan alamat IP saya di aturan firewall database di Azure dan semuanya bekerja dengan baik. Selain itu, ini bisa menjadi masalah proxy / koneksi internet / kata sandi nama pengguna DB / string koneksi DB dll. ATAU jelas, Anda mungkin memiliki migrasi yang tertunda yang Anda perlukan untuk menjalankan perintah Perbarui-Database.
sumber
Secara historis saya selalu menyelesaikan ini dengan menghapus migrasi yang tertunda, atau jika hanya ada 1 yang tersisa dan sebagian besar diinginkan, dengan menggunakan
-f
untuk membuatnya kembali.Baru-baru ini, ini berhenti bekerja untuk saya.
Ketika ini terjadi pertama kali, saya memulai ulang Visual Studio, dan kemudian membiarkan saya melanjutkan.
Kedua kalinya, ini hanya berfungsi setelah saya menjalankan Clean pada proyek tersebut. Itu hampir seolah-olah migrasi yang tertunda dipertahankan meskipun menghapus semua file dari explorer.
sumber
Ini tidak akan menjadi jawaban bagi banyak orang, tetapi EF akan membuang kesalahan ini jika tidak dapat terhubung ke DB. Jika Anda bekerja dari rumah seperti saya, pastikan Anda masih terhubung ke VPN Anda!
sumber
Saya mengalami masalah yang persis sama setelah kembali dari migrasi ke migrasi lain.
Dalam kasus saya, saya "menarget migrasi" dari "migrasi06" ke "migrasi04".
Saya perlu menghapus "migrasi0" 6 dan kemudian saya bisa memaksa pembuatan "migrasi05". Ini pada dasarnya berarti bahwa Anda hanya perlu menyimpan migrasi berikutnya setelah yang ditargetkan.
sumber
Dalam kasus saya (menggunakan MS Visual Studio), itu semudah memulai ulang Visual Studio.
sumber