2011-08-11 45 views
1

我的域模型(簡化版)包含故事,團隊,成員和評論。我處於需要允許用戶編寫關於故事的評論的位置,並且我擁有屬於故事聚集的評論實體,所以我在Story上有一個名爲「AddComment」的方法。在這裏加載聚合來保存評論似乎很愚蠢,所以我想知道我是否應該從聚合中刪除這個實體,或者是否有我在這裏丟失的東西?我相信我會遇到不止一種這種情況,所以任何幫助都會很棒!DDD Aggregate Question(.NET,EF)

感謝

+0

只是與故事相關的評論,還是實際上是一個獨立的聚合本身? –

+0

如果回答你的問題,評論不能沒有故事就存在。 – Marco

回答

2

馬可,拒絕讓技術實施推動這樣的變化到你的領域模型的衝動。每當我這樣做,我後來都後悔了。如果「評論」僅存在於「故事」中,則將「故事」保留爲聚合,並彎曲技術以匹配模型。

+0

它不會是一個浪費時間,你的意思是,例如,在EF中,弄清楚如何完成這沒有第一次獲取實體? – Marco

+0

這可能不會起作用,但通過延遲加載,您至少可以避免吸引所有相關實體(如所有現有註釋)。它可能不如說直接插入評論表,但具有豐富的,可測試的模型通常是值得的一些權衡。 –

+0

所以你更喜歡懶加載VS渴望加載?您的服務層根據其任務「知道」渴望加載哪個實體? – Marco

1

如果註釋不能空手而回存在,那麼爲什麼它看起來很可笑加載故事保存評論?而且你實際上並沒有保存評論,你將它添加到故事中,然後保存故事。

通常,當您發現自己擁有這些文件時,您會執行不必​​要的操作來執行操作,這表示您的域模型可能需要更多細化。檢查所有一致性邊界要求(聚合),檢查模型中的每個有界上下文,也許第一遍會丟失的東西將浮出水面。

正如Eric Evans sais所說,DDD是一個迭代過程。你會失敗的前幾次:)

+0

謝謝,我將不得不閱讀有限的上下文。 – Marco

+0

當你說彎曲技術時,如果你觀看[這個視頻](http://domaindrivendesign.org/library/evans_2009_1) –