Banyak tutorial tentang DDD yang saya pelajari kebanyakan membahas teori. Mereka semua memiliki contoh kode yang belum sempurna (Pluralsight dan sejenisnya).
Di web ada juga upaya oleh beberapa orang untuk membuat tutorial yang mencakup DDD dengan EF. Jika Anda mulai mempelajarinya secara singkat - Anda dengan cepat menyadari bahwa mereka sangat berbeda satu sama lain. Beberapa orang merekomendasikan untuk menjaga aplikasi minimal dan untuk menghindari memperkenalkan lapisan tambahan misalnya repositori di atas EF , yang lain jelas menghasilkan lapisan tambahan, sering bahkan melanggar SRP dengan menyuntikkan DbContext
ke Agregat Root.
Saya sangat minta maaf jika saya mengajukan pertanyaan berdasarkan opini, tapi ...
Ketika sampai pada praktik - Entity Framework adalah salah satu ORM yang paling kuat dan banyak digunakan. Sayangnya, Anda tidak akan menemukan kursus komprehensif yang mencakup DDD.
Aspek penting:
Entity Framework
DbSet
mengeluarkan UoW & Repository ( ) di luar kotakdengan EF model Anda memiliki properti navigasi
dengan EF semua model yang selalu tersedia off
DbContext
(mereka diwakili sebagaiDbSet
)
Perangkap:
Anda tidak dapat menjamin model anak Anda hanya terpengaruh melalui Agregat Root - model Anda memiliki sifat navigasi dan dimungkinkan untuk memodifikasinya dan memanggil
dbContext.SaveChanges()
dengan
DbContext
Anda dapat mengakses setiap model Anda, sehingga menghindari Root AgregatAnda dapat membatasi akses ke anak-anak akar objek melalui
ModelBuilder
diOnModelCreating
metode dengan menandai mereka sebagai ladang - Aku masih tidak percaya itu adalah cara yang tepat untuk pergi tentang DDD ditambah sulit untuk mengevaluasi apa jenis petualangan ini dapat menyebabkan di masa depan ( cukup skeptis )
Konflik:
tanpa menerapkan lapisan repositori lain yang mengembalikan Agregat, kita bahkan tidak dapat menyelesaikan sebagian perangkap yang disebutkan di atas
dengan menerapkan lapisan repositori tambahan, kami mengabaikan fitur bawaan EF (semuanya
DbSet
sudah menjadi repo) dan menyulitkan aplikasi
Kesimpulan saya:
Maafkan ketidaktahuan saya, tetapi berdasarkan info di atas - itu Entity Framework tidak memadai untuk Desain Berbasis Domain atau Desain Berbasis Domain adalah pendekatan yang tidak sempurna dan usang .
Saya menduga masing-masing pendekatan memiliki kelebihan, tetapi saya benar-benar tersesat sekarang dan tidak memiliki ide sedikit pun tentang bagaimana merekonsiliasi EF dengan DDD.
Jika saya salah - bisakah seseorang setidaknya merinci set instruksi sederhana (atau bahkan memberikan contoh kode yang layak) tentang bagaimana cara DDD dengan EF, tolong?