我仍然試圖理解DDD。假設我有一個不可變的VO PresentationSlide
。因爲它是不可變的,所以它很容易被不同的實體共享和使用。 但是如果我嘗試將其映射到數據庫會發生什麼情況。在EntityFramework中,我可以將PresentationSlide
建模爲ComplexType
,這意味着將共享的PresentationSlide
的屬性映射到使用它的表。這很好,但幻燈片可能會很大,因此如果它多次使用/引用,我正在浪費空間。刪除孤立的共享ValueObjects?
作爲一種替代方法,我可以將PresentationSlide
映射到單獨的表並引用它。因爲它是不可變的,所以這也應該起作用。但現在,如果我修改了Presentation
,我必須複製舊的PresentationSlide
的內容並創建一個新實例。如果有很多變化,我很快會在我的數據庫中有很多孤兒PresentationSlides
。
這不是問題嗎?有解決方案嗎? 我是否應該實施自定義期刊「Cleanup孤兒PresentationSlides」任務?
您可以隨時根據事件進行清理,例如'PresentationChanged',或者您可以執行定期清理。儘管如此,有時使用VO可能過於昂貴,儘管沒有真正需要身份。我覺得'PresentationSlide'是可變的。您多長時間一次在演示文稿之間共享「PresentationSlide」,甚至在同一張幻燈片中重複使用同一張幻燈片? – plalx
有一些我不明白。 **共享**'PresentationSlide'意味着當用戶創建一個新的'演示文稿'時,他可以選擇將現有的'PresentationSlide'附加到'演示文稿'而不是添加一個新的演示文稿。但是,您必須爲未來的新/修改的「演示文稿」保留孤立的'PresentationSlides'。 – jlvaquero