Aplikasi yang saya bangun saat ini telah menggunakan prosedur tersimpan dan model kelas kerajinan tangan untuk mewakili objek database. Beberapa orang menyarankan menggunakan Entity Framework dan saya mempertimbangkan untuk beralih ke itu karena saya tidak terlalu jauh ke dalam proyek. Masalah saya adalah, saya merasa orang-orang yang berdebat untuk EF hanya memberi tahu saya sisi baiknya, bukan sisi buruknya :)
Kekhawatiran utama saya adalah:
- Kami ingin validasi Sisi Klien menggunakan DataAnnotations, dan sepertinya saya harus membuat model sisi klien jadi saya tidak yakin EF akan menghemat banyak waktu pengkodean
- Kami ingin menjaga kelas sekecil mungkin ketika melewati jaringan, dan saya telah membaca bahwa menggunakan EF sering menyertakan data tambahan yang tidak diperlukan
- Kami memiliki lapisan basis data yang kompleks yang melintasi beberapa basis data, dan saya tidak yakin EF dapat menangani ini. Kami memiliki satu database umum dengan hal-hal seperti Pengguna, Kode Status, Jenis, dll, dan beberapa contoh dari basis data utama kami untuk berbagai contoh aplikasi. SELECT queries dapat dan akan melakukan query di seluruh instance dari database, namun pengguna hanya dapat memodifikasi objek yang ada dalam database yang sedang mereka kerjakan. Mereka dapat mengganti basis data tanpa memuat ulang aplikasi.
- Mode objek sangat kompleks dan sering ada beberapa gabungan yang terlibat
Argumen untuk EF adalah:
- Konkurensi. Saya tidak perlu kode cek untuk melihat apakah catatan telah diperbarui sebelum setiap penyimpanan
- Pembuatan Kode. EF dapat menghasilkan model kelas parsial dan POCO untuk saya, tetapi saya tidak yakin ini akan sangat menghemat waktu karena saya pikir kita masih perlu membuat model sisi klien untuk validasi dan beberapa metode penguraian khusus.
- Kecepatan pengembangan karena kita tidak perlu membuat prosedur tersimpan CRUD untuk setiap objek basis data
Arsitektur kami saat ini terdiri dari Layanan WPF yang menangani panggilan basis data melalui Prosedur Tersimpan parameter, objek POCO yang pergi ke / dari layanan WCF dan klien WPF, dan klien desktop WPF itu sendiri yang mengubah POCO menjadi Model kelas untuk tujuan Validasi dan Pengikatan Data.
Jadi pertanyaan saya adalah, apakah EF tepat untuk ini? Apakah ada jebakan tentang EF yang tidak saya sadari?