Update skema database dalam Entity Framework

Saya telah menginstal VS SP1 dan bermain-main dengan Entity Framework.

Saya membuat sebuah skema dari database yang sudah ada dan mencoba beberapa operasi dasar.

Sebagian besar ini berjalan dengan baik, kecuali skema database update.

Saya mengubah database dalam setiap cara dasar:

  • menambahkan tabel baru
  • menghapus tabel
  • menambahkan kolom baru ke tabel yang ada
  • menghapus kolom dari tabel yang ada
  • mengubah tipe kolom yang ada

Tiga pertama berjalan dengan baik, tetapi jenis perubahan dan penghapusan kolom tidak diikuti perubahan database.

Apakah ada cara untuk membuat karya dari desainer? Atau itu tidak didukung pada saat ini? Aku't menemukan bahan terkait, namun masih mencari.

Mengomentari pertanyaan (2)
Larutan

Saya akan menebak bahwa mungkin orang-orang don't terjadi karena mereka akan istirahat untuk membangun kode yang ada, tapi yang's hanya menebak pada bagian saya.

Berikut ini's logika saya:

Pertama, EF seharusnya lebih dari 1:1 meja pemetaan, sehingga's sangat mungkin bahwa hanya karena anda menghapus kolom dari tabel Yang doesn't berarti bahwa untuk entitas tersebut, seharusnya't menjadi Deskripsi properti. Anda mungkin hanya peta properti itu ke meja lain.

Kedua, mengubah jenis hanya bisa istirahat membangun. yang's satu-satunya alasan yang ada.

Komentar (1)

I've menemukan bahwa, secara umum, masih ada beberapa bug dengan 'Update Model dari Database' fungsi.

Tombol pembunuh bagi saya - saya've belum memiliki modifikasi yang saya buat ke luar negeri-kunci hubungan atau untuk menambahkan Primary Key untuk suatu tabel dan memiliki updater bekerja dengan benar (dalam hal itu akan memberikan mengkompilasi kesalahan pada kode yang dihasilkan) - tetapi untuk memecahkan masalah itu's masalah sederhana menghapus model dan re-impor (hanya membutuhkan waktu satu menit) - ini adalah kurang dari ideal jelas, tapi aku've tidak pernah mengalami kegagalan dari 'segar' impor.

Komentar (1)

Dari demo desainer I've terlihat, it's tidak sempurna alat. Ini adalah versi 1.0 produk, sehingga's terikat untuk memiliki beberapa titik-titik nyeri. Perubahan jenis adalah salah satu dari mereka tampaknya. Dari menonton desainer dan generasi kode, saya pikir itu akan pecah, baik pada waktu kompilasi (tidak mungkin) atau pada saat run-time (ketika model ini benar-benar dieksekusi).

Komentar (0)

Anda perlu untuk menghapus kolom sendiri dari desainer atau file XML.

Komentar (0)

Seperti disebutkan sebelumnya, anda hanya dapat menghapus kolom dari desainer. Sejauh mengubah tipe data kolom: hanya menyegarkan model dari database kemudian pergi ke meja pemetaan dan pilih kolom yang anda berubah dalam DB. nilai-nilai di sebelah kanan mewakili model anda, anehnya ini tidak mendapatkan diperbarui secara otomatis, tetapi hanya memilih kolom ke kanan dan pergi ke properties dan mengubah jenis data yang ada. Ini harus menjadi menu drop-down.

Sorak-sorai.

Ruddy

Komentar (0)

Saya membangun aplikasi serupa seperti yang diminta. Tapi solusi saya adalah untuk keras. Saya akan mencoba untuk memberitahu;

  1. Anda harus membuat database anda sendiri manajemen kelas pada dan benda-benda ini akan bertanggung jawab untuk membuat, memperbarui skema database (saya buat secara manual itu).

  2. Saya melihat artikel yang baik dan source code pada ADO.NET Tim blog maka anda juga dapat men-download EDMTools dari blog ini, itu open source. Dan anda juga dapat menerapkan model generasi dan memperbarui rutinitas itu ke dalam proyek anda.

  3. Akhirnya ketika skema anda berubah, anda harus menciptakan dan mengikat model anda dan membangun kembali data anda perakitan selama runtime. Tapi anda harus tahu yang paling penting, anda harus mengikat model data anda perakitan untuk proyek anda dengan longgar digabungkan (check out ini posting)

Cara lain, anda harus menunggu untuk EF 4.0 release (itu CTP 1 sekarang), mereka mengumumkan bahwa mereka akan menyediakan membuat,menghapus,memperbarui DatabaseScript fungsi.

Baik kunci

Komentar (0)

Cara saya'm melakukan hal ini (dan I'm melakukan semua hal yang anda sebutkan, ditambah mengubah nama kolom) adalah dengan membuat perubahan ke database dan regenerasi EF kode menggunakan EF Kode Pertama.

I'm tidak merusak EF Kode kelas Pertama untuk yang baik atau yang buruk (termasuk nonsensically bernama kolom untuk relations) untuk kemudahan proses.

Tidak ada desainer atau ORM skema generator akan mampu membuat perubahan pada database produksi jika memiliki data yang dibatasi di dalamnya. Inilah sebabnya mengapa anda harus selalu mulai dengan memeriksa apakah perubahan anda ke DB yang layak, mencoba mereka pada pengembangan database dan kemudian beradaptasi kode anda untuk mencerminkan perubahan.

Komentar (0)