我知道有這樣的一百萬個問題。對不起。我認爲我是不同的,但似乎並非如此。我是DDD的新手,並試圖抓住。 我的部分域名是這樣的。 位置1 *場 場1 *事件 場1 *任務 任務-員工聚合根設計和大小
現在看來,當AR的位置。如果我想要完成特定的任務,我必須通過收集任務集中的字段來遍歷任務。
這聽起來相當費力,因爲我處理的任務和事件很多,幾乎從來沒有說每個位置的位置。該位置用於隔離一組字段及其對應的實體。所以在UI中,我可以選擇一個位置並獲得一個字段列表。然後我會選擇一個領域。從那裏我可以編輯它的任務之一。所以我有一個任務集合,我選擇一個,所以我有任務的Id。然後,我需要遍歷到位置並獲得他的ID,以便我可以獲得AR並回溯到任務。或者說,我會保持AR的Id,以便我能夠得到它。那麼我是否也應該保持領域的Id?所以我回到服務器的是AR.Id,Field.Id和Task.Id,我想看看?其次,員工當然不可能是一個實體,它很可能是一個AR。 AR上的實體可以擁有AR集合嗎?
所以也許它的結構應該是這樣的?
public class Location // is an aggregate Root
{
public IEnumerable<Field> Fields {get;set;} //in real code encapsulated. not here for brevity
}
public class Field // is an Aggregate Root
{
public Location Location {get;set;} //reference to AR
public IEnumerable<Task> Tasks {get;set;}
public IEnumerable<Events> Events {get;set;}
}
public class Task // is an Aggregate Root
{
public Field Field {get;set;} // reference to AR
public IEnumerable<Employee> Employees {get;set;}
public TaskType TaskType {get;set;} // probably Value Object
public IEnumerable<Equipment> Equipment {get;set;} // maybe Entity or AR
}
這使得它更容易處理所修改的最多,穿越它們之間的關係的對象,但感覺有點像老式OOP和AR並不真正意味着什麼。
再次,我是DDD的新手,沒有任何人爲了完整性檢查而運行此操作。請幫助我瞭解這些邊界是如何繪製的,如果是第一種方法,是否有更簡單的方法來處理實體,然後攜帶AR.id,ParentParent.Id,ParentId以及最終的對象感興趣Entity.Id
感謝您的任何想法 [R
這是非常結構性的。聚合是交易一致性邊界,而不是您穿過的結構圖。 –