Terbaik .NET Solusi bagi anda yang Sering Berubah Database

Saat ini saya architecting kecil CRUD applicaton. Database mereka adalah kekacauan besar dan akan sering berubah selama 6 bulan ke depan sampai satu tahun. Apa yang akan anda rekomendasikan untuk saya layer data:

  1. ORM (jika jadi, yang mana satu?)

  2. Linq2Sql

  3. Prosedur Yang Tersimpan

  4. Parametrized Query

Aku benar-benar membutuhkan solusi yang akan cukup dinamis (cepat dan mudah) di mana saya bisa mengganti meja dan menambah/menghapus kolom sering.

Catatan: saya tidak memiliki banyak pengalaman dengan ORM (hanya sedikit Subsonik) dan umumnya cenderung menggunakan prosedur yang tersimpan jadi mungkin itu akan menjadi cara untuk pergi. Aku akan senang untuk belajar Ling2Sql atau NHibernate jika baik akan memungkinkan untuk situasi saya've dijelaskan di atas.

Larutan

Satu hal penting yang harus diperhatikan di sini adalah bahwa jika skema database berubah sering, anda ingin memiliki beberapa tingkat dari waktu kompilasi jenis keamanan. I've ini tidak ada masalah dengan NHibernate karena menggunakan xml mapping file jadi jika anda mengubah sesuatu dalam skema database anda, anda don't tahu sampai runtime bahwa pemetaan rusak.

Hal ini juga akan menjadi masalah dengan disimpan procs.

Menggunakan Linq2Sql akan memberikan anda keuntungan mengetahui di mana tepatnya anda melanggar kode ketika anda mengubah skema pada waktu kompilasi. Ini bagi saya, adalah sesuatu yang akan didahulukan dari segala sesuatu yang lain jika saya'm bekerja dengan sering mengubah skema

Komentar (3)

I'd lihat di Bawah ini dengan membangun provider (Proyek Website) setup. Bahwa karya-karya besar karena secara otomatis meregenerasi DAL benda setiap saat anda membangun proyek anda, sehingga jika database perubahan dalam cara yang melanggar kode anda, anda bisa membangun sebuah kesalahan.

Itu bekerja dengan baik sampai skema database yang benar-benar kompleks dan kita memukul batas ActiveRecord pola, tapi selama skema's tidak sangat kompleks itu bekerja dengan cukup baik. Setelah skema stabil, anda dapat beralih sehingga anda're-satunya bangunan DAL ketika anda ingin.

Komentar (0)

Anda pasti ingin menggunakan ORM. ORM adalah ok, tetapi anda ingin sesuatu yang akan menghasilkan kuat diketik kelas. Ketika bidang ditambahkan, dimodifikasi, atau dihapus dari tabel, anda ingin menjadi mampu meregenerasi kelas-kelas, dan bergerak dengan memperbaiki waktu kompilasi kesalahan saja. Jika anda menggunakan model dinamis, anda're cenderung memiliki banyak jahat kesalahan runtime. Ini SANGAT penting! Saya adalah bagian dari MyGeneration tim pengembangan di sourceforge, dan saya pikir itu adalah solusi yang bagus untuk masalah anda. Anda dapat menghasilkan barang-barang kecil, NHibernate, EasyObjects, EntitySpaces, dll. Jika anda ingin pergi dengan yang lebih mahal solusi, pergi dengan CodeSmith atau LLBLGen Pro. Keberuntungan - siapa saja yang tertarik dalam menggunakan MyGeneration, merasa bebas untuk menghubungi saya dengan pertanyaan-pertanyaan.

Komentar (0)

NHibernate, tetapi hanya jika anda akan setuju untuk memiliki objek-pendekatan pertama dimana anda menentukan kelas anda, dan kemudian menentukan yang anda inginkan struktur tabel dalam file pemetaan, dan kemudian membuat skema database menggunakan NHibernate's dibangun dalam skema generasi kelas.

Untuk melakukan hal ini dengan cara lain (misalnya, anda memiliki banyak meja dan kemudian anda dasar objek desain pada) I've ditemukan MyGeneration + NHibernate untuk bekerja, meskipun saya'm tidak terlalu senang dengan kelas yang dihasilkan (terutama karena saya'm tersebut ngotot untuk benar Object Oriented Programming).

Komentar (0)

Jika saya berada di sepatu anda aku akan mencoba untuk memanfaatkan apa yang saya tahu (sprocs) dengan Linq2Sql. Linq2Sql masih dapat menggunakan sprocs tapi kemudian anda memiliki bonus tambahan menempatkan alat baru di ikat pinggang anda. Saya pikir memiliki pemahaman pada Linq2XXX (X menjadi acak teknologi hiburan dewasa....yang isn't ide yang buruk sekarang aku berpikir tentang hal itu) sintaks dan metodologi akan menjadi tambahan yang bagus untuk keahlian anda menggunakan Linq atas benda-benda koleksi adalah cara yang manis.

Tapi pada akhirnya sesuatu seperti NHibernate akan sesuai dengan anda lebih baik dalam jangka panjang.

Komentar (0)

EntitySpaces dapat meregenerasi anda DAL/Bisnis Lapisan dalam satu menit, dan tidak ada kode kerugian, melihat versi trial ==> di SINI

Tidak ada Pendaftaran Diperlukan, berjalan di bawah Visual Studio juga.

Komentar (1)

Gunakan EntitySpaces. anda akan mengirimkan saya bunga, dijamin. cukup mengagumkan. mengubah db seperti yang anda suka. tekan tombol, bang. semua perubahan yang dilakukan. tanpa mengubah kode kustom anda. Saya suka itu.

Komentar (0)

Cara sederhana adalah aplikasi? Jika saya bisa bekerja sama dengan skema/desain barang-barang untuk beberapa bulan, dan tidak benar-benar khawatir tentang aplikasi yang sebenarnya . . . Saya akan mempertimbangkan menggunakan EDM dan Dinamis Entitas Data proyek Aplikasi Web. Ini anda akan dengan sedikit usaha, menurut pendapat saya. Ini membuat anda tetap fokus pada skema, data dan lain groovey hal. Mudah-mudahan aku don't mendapatkan terlalu banyak neg benjolan dari yang satu ini!

Berikut ini's bagaimana proyek baru kotak dialog akan terlihat seperti ini

Komentar (0)

Setiap solusi dapat bekerja, apa yang anda benar-benar membutuhkan serangkaian tes yang akan menjamin bahwa operasi dasar seperti insert, select, update dan delete bekerja. Dengan cara ini anda hanya dapat menjalankan tes anda dan memeriksa apakah pemetaan yang up-to-date.

Komentar (0)

Anda're sudah bahagia dengan yang tersimpan procs dan mereka mungkin akan cukup untuk abstrak perubahan skema. Jika ORMs aren't bahagia dengan disimpan procs maka mungkin mereka'd bekerja dengan Pemandangan yang anda simpan saat ini di atas mengubah skema.

Komentar (0)

Jika perubahan skema database sering, lebih memilih Entity Framework di atas LINQ2SQL. Jika perubahan skema, menggunakan L2S anda harus

  1. Menghapus dan menambahkan meja anda (kehilangan kustomisasi anda)
  2. Memodifikasi model dengan tangan (seperti yang dilakukan di sini di stackoverflow)

EF adalah super-set L2S, memberikan anda lebih banyak fleksibilitas penggunaan dan dbms-kemerdekaan

Komentar (0)

melihat mengapa hal itu berubah, dan melihat jika anda dapat mengantisipasi dan menggeneralisasi jenis perubahan yang datang pada anda sehingga mereka don't kode anda

kerangka kerja dapat membuat seluruh perubahan yang lebih mudah, tapi analisis yang lebih mendalam akan memiliki jangka panjang manfaat

Komentar (0)