Saya ingin men-debug Seed()
metode di kelas konfigurasi database Entity Framework saya saat menjalankan Update-Database
dari Package Manager Console tetapi tidak tahu cara melakukannya. Saya ingin berbagi solusi dengan orang lain jika mereka memiliki masalah yang sama.
entity-framework-5
Sachin Kainth
sumber
sumber
migrate.exe
dari konsol untuk melampirkan studio visual yang sedang berjalan. Info MOre dalam jawaban ini: stackoverflow.com/a/52700520/350384Cara saya memecahkan ini adalah dengan membuka contoh baru Visual Studio dan kemudian membuka solusi yang sama dalam contoh baru Visual Studio ini. Saya kemudian memasang debugger dalam contoh baru ini ke contoh lama (devenv.exe) saat menjalankan perintah update-database. Ini memungkinkan saya untuk men-debug metode Seed.
Hanya untuk memastikan saya tidak melewatkan breakpoint dengan tidak melampirkan waktu, saya menambahkan Thread.Sleep sebelum breakpoint.
Saya harap ini membantu seseorang.
sumber
Jika Anda perlu mendapatkan nilai variabel tertentu, cara cepatnya adalah dengan membuat pengecualian:
sumber
Solusi yang lebih bersih (saya kira ini membutuhkan EF 6) adalah IMHO akan memanggil database pembaruan dari kode:
Ini memungkinkan Anda untuk men-debug metode Seed.
Anda dapat mengambil satu langkah lebih jauh dan membuat pengujian unit (atau, lebih tepatnya, pengujian integrasi) yang membuat database pengujian kosong, menerapkan semua migrasi EF, menjalankan metode Seed, dan menghapus database pengujian lagi:
Namun berhati-hatilah agar tidak menjalankan ini pada database pengembangan Anda!
sumber
Saya tahu ini adalah pertanyaan lama, tetapi jika yang Anda inginkan hanyalah pesan, dan Anda tidak peduli untuk menyertakan referensi ke WinForms dalam proyek Anda, saya membuat jendela debug sederhana tempat saya dapat mengirim peristiwa Trace.
Untuk debugging yang lebih serius dan selangkah demi selangkah, saya akan membuka instance Visual Studio lain, tetapi tidak perlu untuk hal-hal sederhana.
Ini adalah keseluruhan kode:
SeedApplicationContext.cs
Dan pada Configuration.cs standar Anda
sumber
SeedInternal
metode dapat menggunakannya)Uh Debugging adalah satu hal tetapi jangan lupa untuk memanggil: konteks.Update ()
Juga jangan membungkus try catch tanpa pengecualian internal yang baik ke konsol.
https://coderwall.com/p/fbcyaw/debug-into-entity-framework-code-first dengan tangkapan (DbEntityValidationException ex)
sumber
Saya memiliki 2 solusi (tanpa
Debugger.Launch()
karena itu tidak berhasil untuk saya):Untuk mencetak pesan di Package Manager Console menggunakan pengecualian:
throw new Exception("Your message");
Cara lain adalah mencetak pesan dalam file dengan membuat
cmd
proses:sumber