EF vs. NHibernate [ditutup]

8

Dalam 2 tahun terakhir sejak saya mulai menulis aplikasi bisnis (sebelum saya melakukan pemrograman front level tinggi atau sistem level sangat rendah), set data dipelajari, linq to sql, dan sekarang framework entitas. Hal yang logis untuk dilihat selanjutnya adalah NHibernate.

Alasan saya akhirnya berakhir di EF adalah: (1) ia memiliki dukungan desainer terbaik dan (2) itu yang paling didukung oleh Microsoft.

Alasan (ini memiliki elemen asumsi) Saya tertarik pada NHibernate adalah: (1) itu mungkin tidak dapat digantikan oleh hal yang sama sekali berbeda secepat MS churns teknologi akses data (2) Sepertinya itu berjalan di depan atau kedua alat berlari depan untuk apa yang dilakukannya dan (3) Tampaknya stabil dan dapat dilacak kembali melalui waktu sedikit.

Adakah yang mempublikasikan skenario keduanya? Apakah yang satu lebih baik dari yang lain untuk jenis arsitektur tertentu? Atau hanya masalah gaya dan preferensi?

Aaron Anodide
sumber

Jawaban:

6

Pada titik ini saya pikir keuntungan utama (saja?) Yang dimiliki NH dibandingkan EF adalah beberapa strategi pengambilan yang sangat bagus . Alih-alih malas memuat atau bersemangat memuat semuanya, NH memberi Anda beberapa opsi perantara yang sangat bagus.

Karena itu, saya tidak pernah membutuhkan tingkat kontrol atas akses data saya, dan kesederhanaan EF telah menjadikan pilihan itu mudah.

Perlu diketahui bahwa file desainer EF yang jika tidak begitu bagus untuk dikerjakan dapat menjadi mimpi buruk dalam kontrol sumber; itu tidak bergabung dengan baik, atau tidak sama sekali. Pastikan Anda memeriksanya dengan kunci eksplisit kapan saja Anda perlu mengubah barang.

Adam Rackis
sumber
3
+1 untuk hal perancang. Saya tidak punya pengalaman baik dengan apa pun yang berhubungan dengan seorang desainer.
Codism
jangan lupa kemampuan untuk selalu bekerja dengan DB selain SQLServer. EF menghasilkan sql non-standar dalam beberapa kasus.
gbjbaanb
dapatkah Anda menyiasati masalah penggabungan dengan memasukkan file desainer ke daftar abaikan dan menghasilkan ulang, karena perubahannya tercermin dalam file edmx?
Aaron Anodide
1
@ Gabriel, saya pikir file edmx adalah apa yang menyebabkan masalah. Orang-orang memperbarui perancang, yang mengubah edmx, lalu check-in, dan jika orang lain melakukan hal yang sama, semua kacau.
Adam Rackis
5
Jika Anda mengunduh unduhan (resmi, didukung Microsoft, tetapi tidak termasuk dalam .NET 4.0) EF 4.1 , Anda dapat menggunakan Kode Pertama dan mengumpulkan pemetaan Anda sangat mirip dengan FluentNHibernate. Bekerja sangat baik dengan kontrol sumber.
Aaronaught
3

Kami sedang melakukan proyek di mana arsitek memilih NHibernate daripada EF. Saya berharap pilihannya berubah karena persyaratan penerbit-pelanggan sudah ada sejak awal.

Jika Anda berencana menggunakan kerangka sinkronisasi , lanjutkan dengan EF, karena NHibernate tidak dapat mengatasi pembaruan (ke kolom yang menentukan dari mana data berasal, siapa yang mengubahnya dan merupakan salinan saya yang terbaru) yang berada di belakang layar.

Jika Anda perlu mereplikasi data dari satu basis data ke basis data lainnya (dan menjaga kunci primer tetap sama), session.Replicatefungsinya kurang didokumentasikan dan tampaknya membutuhkan waktu lebih lama daripada salinan langsung.

Tangurena
sumber