Ini terserah kamu.
Sebagian besar orang akan memberi tahu Anda bahwa itu bukan praktik yang baik tetapi dalam beberapa kasus Anda bisa melakukannya.
EF tidak pernah bermain bagus dengan DDD karena berbagai alasan, tetapi ada dua yang menonjol: Anda tidak dapat memiliki konstruktor berparameter pada entitas Anda dan Anda tidak dapat merangkum koleksi. DDD mengandalkan itu, karena model domain harus mencakup data dan perilaku.
Di satu sisi, EF memaksa Anda untuk memiliki model domain anemia dan dalam hal ini Anda dapat menggunakan entitas sebagai DTO. Anda dapat mengalami beberapa masalah jika Anda menggunakan properti navigasi tetapi Anda bisa membuat serial entitas tersebut dan mengirimkannya melalui kabel. Ini mungkin tidak praktis. Anda harus mengontrol serialisasi untuk setiap entitas yang memiliki properti yang tidak perlu Anda kirim. Cara yang lebih mudah adalah dengan mendesain kelas terpisah yang dirancang khusus untuk transfer data. Perpustakaan seperti AutoMapper dibuat untuk tujuan ini.
Sebagai contoh: Misalkan Anda memiliki kelas yang dipanggil Person
dengan definisi berikut:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; get; }
// plus a bunch of other properties relevant about a person
}
Dengan asumsi Anda ingin menampilkan daftar karyawan di suatu tempat, mungkin praktis untuk mengirim saja Id
, FirstName
dan LastName
. Tetapi Anda harus mengirim semua properti yang tidak relevan lainnya. Ini bukan masalah besar jika Anda tidak peduli tentang ukuran respons tetapi ide umumnya adalah hanya mengirim data yang relevan. Di sisi lain, Anda dapat merancang API yang mengembalikan daftar orang dan dalam hal itu mengirim semua properti mungkin diperlukan, sehingga masuk akal untuk membuat cerita bersambung dan mengirim entitas. Dalam hal ini, membuat kelas DTO masih bisa diperdebatkan. Beberapa orang suka mencampuradukkan entitas dan DTO, beberapa orang tidak.
Untuk menjawab pertanyaan Anda yang diperbarui, EF adalah ORM. Tugasnya adalah memetakan catatan basis data ke objek dan sebaliknya. Apa yang Anda lakukan dengan benda-benda itu sebelum dan sesudah melewati EF bukan bagian dari keprihatinannya. Seharusnya juga tidak.