聚合記憶體在集合應該如何修改?

JasonMing發表於2014-01-22
Hi,各位,我想請問一下,如果一個聚合之記憶體在一個多重的關係,例如:
Resource(1)--->(*)Content
其中Resource是聚合根,Content是聚合根內一個實體

如果我需要將持久化的Resource取出這很簡單,透過ResourceRepository將Resource及其對應的Content取出再組合成一個完整的物件即可

現在問題是,如果我需要新增一個Content,我應該如何實現?

邏輯上新增(管理)Content是Resource中的職責,那麼就會有如下方法:

public class Resource
{
  public void Add(Content content);
}
<p class="indent">

這樣在記憶體中的Resource實體的確修改了,但是,如果我想將其持久化(例如儲存至資料庫),我應該如何實現?
如果是在ResourceRepository中加入Update(Resource resource)方法,這個方法我該如何實現,因為這個方法內無法快速發現我新增了哪個Content。

請問,我應該如何正確地實現更新聚合內集合這樣的操作(在非EventSourcing的結構下)?

相關文章