2017-07-21 51 views
2

有一些屬性對域沒有意義,但對於存儲庫來說是必不可少的,其中一個例子是分區鍵。DDD - 存儲庫上的實體DTO表示

在我的存儲庫上有一個DTO可以擴展實體的基本實現,添加相關字段嗎?

+2

您有此問題,因爲您沒有將讀取模型與寫入分開;在'CQRS'中,你不會有這種問題。 –

回答

2

這完全沒問題。只要這個DTO停留在存儲庫中。 在Fowler的POEAA:

Repository模式被描述爲:使用集合狀接口,用於訪問 域對象的域 和數據映射層間介導。

只要存儲庫正在正確地完成他的工作(存儲和獲取域模型),實現並不重要。 只要確保存儲庫的任何實現細節都不會在項目的其餘部分傳播。如果您將DTO添加到存儲庫中的實體,請確保您返回的實體沒有DTO或其他不相關的額外字段。

+0

小心:正如引用的文本中所述,「存儲庫」與領域驅動設計第六章中Evans所描述的「存儲庫」不一致。 Evans在應用程序和域之間使用存儲庫,而不是在域和持久性存儲之間使用存儲庫。 – VoiceOfUnreason

+1

我認爲Evans正在談論相同的存儲庫模式。你能解釋「應用程序和域之間」是什麼意思? –