我最近開始探索域驅動設計並且有一個問題。假設我的應用程序中有一個Product,Category,Manufacturer域模型。和產品看起來是這樣的:在域驅動設計中獲取關聯聚合
public class Product
{
int ProductId;
string Title;
string Description;
double Price;
int CategoryId;
Category Category;
Manufacturer Manufacturer;
}
總體上在顯示產品的詳細視圖,類別名稱和製造商名稱顯示(而不是它們的ID)。但類別和製造商是不同的聚合。問題是如何獲取製造商和類別名稱以及產品域模型。 ProductRepository將只返回產品域模型(與categoryId和ManufacturerId一起)。
- ,要麼是我的產品服務提出了另一個請求獲取 的CategoryId和ManufacturerId
- 或者當產品從產品存儲庫中取出,我可以獲取它們。
但我不需要所有的屬性,我只需要他們的標題。我面臨着所有領域模型的類似問題。
請幫我該如何解決這個問題。
謝謝你的迴應!如果我開始爲詳細信息頁面使用Read模型,我沒有在應用程序中看到很多DomainModel的用法。列表頁面也將獲取'閱讀模型'以及詳細信息頁面。只有在創建/編輯產品時,「域模型」可能會有用。它是否正確? – Pragmatic
是的,當數據進入應用程序並強制實施不變量時,Rich Domain Model對您的寫入(創建/編輯)具有更多價值。使用域模型進行讀取(顯示列表/詳細信息)是過度殺毒,這通常會導致應用程序性能下降。 –
因此,如果用戶想要從詳細頁面(使用讀取模型填充)編輯某個領域模型,應用程序服務將首先從數據庫中獲取領域模型,然後將所有值從讀取模型複製到領域模型,驗證它們和他們插入它?甚至在添加關聯的情況下:例如,在向產品添加標籤的情況下,服務將首先獲取產品域模型,向其子列表添加標籤,然後對其進行驗證並進行編輯? – Pragmatic