如果我有一個聚合根說:用戶它擁有財產一樣域驅動設計:聚合根可以有公共setter嗎?
public class User:BaseEntity
{
public User()
{
//Ef Use
}
public User(string firstName, string secondName,
string userName,Password password)
{
this.UserName = userName;
this.Password = password;
this.FirstName = firstName;
this.SecondName = secondName;
}
public string UserName { get; private set;}
public Password Password { get; private set;}
public string FirstName { get; private set;}
public string SecondName { get; private set;}
}
我可以像var naz=new User ("naz","password","firstName","secondname"
創建新的用戶) 和保存使用UserRepository
。 我應該如何編輯用戶fistname
屬性?
我是否需要製作公共setter並使用存儲庫進行保存? 。
我很困惑,對DDD是新的。我應該如何實現這一點。
DDD與技術(戰術)模式無關,如存儲庫。這是關於按照它的方式建模您的域。我們無法知道如何在不知道自己的域名的情況下設計聚合根目錄,但您似乎錯了。 AR不是財產桶,DDD不適合CRUD。如果這是您需要的,請使用ActiveRecord方法,而不要嘗試應用DDD,因爲您認爲它很酷,因爲如果您不瞭解核心戰略模式,就會失敗。 – plalx 2015-02-12 06:04:41
完全同意@plalx, 我可以補充一點,好的問題應該是,更改名字的業務需求是什麼(不知道域名,我認爲沒有意義,用戶更改名稱可能只是爲了糾正大部分情況)。一般來說,我們會預先設定一個更新值的明確方法(例如,當您更改地址時,您不會設置值,您有稱爲移動位置的方法或某種方法;))。 – rad 2015-02-12 11:07:37