2011-08-16 82 views
2

我有兩個aggrgate根,BonusProgram和Advertiser。現在規則是廣告客戶一次只能有一個獎勵計劃。現在要爲廣告客戶分配bonusProgram,我應該怎麼做,我是否在廣告客戶中有這樣的方法。域名服務或域內方法

public virtual void AssignBonusProgram(BonusProgram bonusProgram) 
    { 
     this.bonusProgram = bonusProgram; 
    } 

或做我創建域名服務,在

public void SubscribeToBonusProgram(BonusProgram bonusProgram, Advertiser advertiser) 
    { 

    } 

回答

4

服務這樣的方法將是在這種情況下矯枉過正。您的業​​務規則已被您的bonusProgram不是集合的事實捕獲。

...規則是廣告客戶可以在 時間有只有單一獎金程序。

而且您的實施告訴我,廣告客戶可能沒有關聯的獎勵計劃。如果不是這種情況,你可以簡單地檢查null並拋出ArgumentNullException。域服務經常被濫用,首先嚐試將邏輯放入其中一個實體或值類型中可能是一個好主意。如果邏輯不屬於任何實體,則只能使用domain service