我有以下DDD方案中,分爲以下的聚集體:DDD:一到許多在其它聚集用戶聚合根和幾乎所有實體之間的關係
用戶,
朋友(用戶協會),
文件(用戶上傳),
畫廊(文件組),
消息(用戶通信),
組(用戶可以創建和其他的會員可以加入),
GroupMessages(郵件發送到的所有成員組),
羣組論壇(羣組成員可以討論各種主題)
這就是它令人困惑的地方。用戶與GroupForums的所有內容相關聯。通過用戶存儲庫訪問其他集合似乎不合邏輯,儘管從級聯的角度來看,如果我刪除了用戶,技術上與用戶關聯的記錄也應該消失。
看起來好像我不應該將這裏存在的所有一對多關聯添加到用戶實體,因爲從數據庫中提取水合物似乎很荒謬,特別是如果我嘗試拉取與該關聯的每條記錄用戶。對於組織集合和存儲庫以及處理給定實體的許多一對多關係的正確方法,建議採用什麼策略?
對於用戶聚合示例,我使用了Entity Framework POCO實體生成實用程序,並創建了User對象,併爲它與其具有一對多關係的所有實體添加了IList <>屬性。順便說一句,我正在使用微軟作爲一個微型的orm。我是否應該刪除IList <>屬性條目,因爲我寧願從它們各自的存儲庫訪問它們?在這種情況下,我應該從User實體中刪除IList(一對多)關聯,並且有權訪問組通過GroupRepository而不是User存儲庫? – user1790300 2013-05-05 20:17:15
我真的不知道EF,所以我不知道如何正確操作文件。對於這個問題,我不知道任何ORM :) --- w.r.t.用戶 - >組它將取決於你的域名,但我猜測用戶分組是多對多的,所以我會從用戶中刪除該列表。可能有用戶所屬的組ID的列表或包含ID和組名稱的某個值對象(UserGroup)。 – 2013-05-06 04:47:08
讓我們從純粹的實體和聚合視角來看待它,組織用戶與朋友,文件,圖庫,消息,組,GroupMessages,GroupForums實體之間的關係的推薦方法是什麼?對我來說,似乎應該在用戶實體中沒有IList條目,而是每個其他實體都應該包含用戶實體的屬性。 – user1790300 2013-05-06 12:42:32