Saya bekerja dengan database SQL Server dengan 1000 tabel, beberapa ratus tampilan, dan beberapa ribu prosedur tersimpan. Kami sedang mencari untuk mulai menggunakan Entity Framework untuk proyek-proyek baru kami, dan kami sedang mengerjakan strategi kami untuk melakukannya. Hal yang saya tutup adalah bagaimana cara terbaik untuk membagi tabel menjadi model yang berbeda (EDMX atau DbContext jika kita pergi kode dulu). Saya dapat memikirkan beberapa strategi langsung:
- Dibagi berdasarkan skema
Kami memiliki tabel kami yang dibagi menjadi mungkin selusin skema. Kita bisa melakukan satu model per skema. Ini tidak sempurna, karena dbo masih menjadi sangat besar, dengan 500+ tabel / tampilan. Masalah lain adalah bahwa unit kerja tertentu pada akhirnya harus melakukan transaksi yang menjangkau beberapa model, yang menambah kompleksitas, meskipun saya berasumsi EF membuat ini cukup mudah. - Pisahkan dengan niat
Daripada mengkhawatirkan skema, pisahkan model dengan niat. Jadi kita akan memiliki model yang berbeda untuk setiap aplikasi, atau proyek, atau modul, atau layar, tergantung pada seberapa granular yang ingin kita dapatkan. Masalah yang saya lihat dengan ini adalah bahwa ada tabel tertentu yang mau tidak mau harus digunakan dalam setiap kasus, seperti Pengguna atau AuditHistory. Apakah kita menambahkan itu ke setiap model (saya pikir ini melanggar KERING), atau apakah mereka dalam model terpisah yang digunakan oleh setiap proyek? - Jangan berpisah sama sekali - satu model raksasa
Ini jelas sederhana dari sudut pandang pengembangan tetapi dari penelitian dan intuisi saya ini sepertinya bisa tampil sangat, baik pada waktu desain, waktu kompilasi, dan mungkin waktu yang berjalan.
Apa praktik terbaik untuk menggunakan EF terhadap basis data yang begitu besar? Khususnya strategi apa yang digunakan orang dalam merancang model terhadap volume objek DB ini? Apakah ada opsi yang menurut saya tidak lebih baik daripada yang saya miliki di atas?
Juga, apakah ini masalah di ORM lain seperti NHibernate? Jika ya, apakah mereka menghasilkan solusi yang lebih baik daripada EF?