Saya baru-baru ini memprogram dengan Entity Framework 4.1 Code First dan saya menyukainya untuk pengembangan, tetapi dengan hanya rencana akhir dan daftar fitur yang berubah dengan cepat, saya terus-menerus memodifikasi Kelas / Database untuk memenuhi kebutuhan aplikasi.
Dalam pengembangan, tidak ada data langsung dan saya dapat dengan mudah menghapus seluruh database sehingga dibuat kembali dengan skema baru, tetapi, tentu saja, ketika live - ini sangat buruk!
Satu-satunya solusi yang bisa saya lihat adalah dengan menjatuhkan tabel metadata dan secara manual menjaga database tetap sinkron atau pada dasarnya drop dan reseed.
Saya pribadi lebih suka metode pertama karena saya pikir akan jauh lebih mudah untuk menambahkan kolom / tabel daripada membuat ulang dan memigrasikan data, tetapi, kecuali saya melewatkan sesuatu, ini benar-benar menjauh dari Code First.
Jadi pertanyaannya adalah, apakah Code First hanya tentang pengembangan awal dan apa strategi yang baik untuk mengelola EF untuk lingkungan produksi?
sumber
Jawaban:
Pendapat saya adalah bahwa pembuatan basis data otomatis kode pertama hanya untuk pengembangan. Saya menjawab pertanyaan serupa di Stack Overflow di mana saya menjelaskan cara meng-upgrade database dan mengapa fungsi otomatis buruk dalam produksi:
Memutakhirkan database adalah tugas semi-manual. Seharusnya tidak ada sihir yang belum teruji secara otomatis - apalagi EF 4.1 saat ini tidak memiliki keajaiban seperti itu (hanya ada beberapa presentasi tentang fitur yang sedang dikerjakan oleh tim ADO.NET).
Anda juga dapat memeriksa pertanyaan ini untuk lebih memahami bagaimana situs web ditingkatkan.
sumber
Pertahankan skrip pemutakhiran .
Dalam database itu sendiri, pertahankan tabel di mana catatan disimpan dengan versi skema.
Ketika aplikasi Anda mulai, itu mendeteksi versi terhadap versi yang seharusnya digunakan oleh binari. Jika berbeda, ia menjalankan (atau meminta pengguna) skrip pemutakhiran.
Jangan lupa untuk membuat cadangan basis data terlebih dahulu.
sumber
Pertanyaannya entah bagaimana cacat karena membuat koneksi antara model pemrograman dan lingkungan runtime di mana tidak ada.
Kode pertama terutama adalah driver kecepatan pengembangan dan tidak benar-benar terhubung ke sistem runtime.
Dalam produksi, Anda akan memiliki pengaturan konfigurasi yang benar yang menolak runtime kemungkinan menghapus / memperbarui model db.
sumber