我很努力識別域對象。實體vs聚合vs聚合根
問題:
- 一個公司有一個或多個位點
- 網站具有主要和多個接觸
- 因此,一個公司有一個或多個觸點。這些聯繫人分配給網站。
- 聯繫人必須添加到站點而不是一個公司
我的理解:
public class Company : IEntity
{
public int CompanyId {get;}
public string CompanyName {get;}
//.....
}
public class Site : IEntity
{
public int SiteId {get;}
public string SiteName {get;}
//.....
}
public class Contact : IEntity
{
public int ContactId {get;}
public string SurName {get;}
public bool MainSiteContact {get;}//Confused!! May be this is not the right place
//.....
}
public class SiteContact : IAggregate
{
public Site ASite { get; }
public List<Contact> Contacts { get; }
public Contact MainContact {get;}//Confused!!
//.....
public Contact AddSiteContact(...)
{
}
}
public class CompanySites : IAggregateRoot
{
public Company ACompany { get; }
public List<Site> Sites { get; }
public List<SiteContact> Contacts { get; }
//.....
}
我在正確的方向?請糾正我,如果我錯了...
更新 @Beachwalker在@Aydin Adn的答案下面的評論部分正確地闡述了這個問題。
@Aydin ADN我覺得他的問題有一個以上的幾個方面:1,這些對象如何 符合正確的領域驅動設計 (DDD)的形式給出的背景下,什麼是他們的DDD的介紹,例如AggregateRoot, 實體,ValueObject等。2.域 的解釋是否正確。 (領域模型)
只要按照說明鍵入。你創建一個鏈接表'CompanySites',這是一個多對多的關係,但是你解釋它的方式,'Site'只需要一個'CompanyId','Company'需要一組'Site'。 – Silvermind 2014-10-08 16:24:32
@Silvermind所以你認爲不需要CompanySites或聚合根?只需要在網站類中添加公司ID。 – MJK 2014-10-08 16:33:44
是的,@AydinAdn有一個恰好反映你的解釋的例子。 – Silvermind 2014-10-08 18:26:18