我想展開這個問題When to update audit fields? DDD。如何更新域模型中的審計字段?
在我的域模型中,這可能不是正確的位置,但我們擁有屬性Created和UsedBy,兩者都是User類型,都是值對象。
我是DDD的新手,並且對哪一層負責更新這些屬性感到困惑......數據?域?或應用程序?
在上面鏈接的問題中,他們提到使用事件來更新這些屬性......假設這些字段可以在域上更新?
這裏是我的類的實例...
public class SpritePalette
{
private readonly SpritePaletteColors _colors;
public string Id { get; private set; }
public string Name { get; private set; }
public SpritePaletteColors Colors { get { return _colors; } }
public bool IsPublic { get; private set; }
public User CreatedBy { get; private set; }
public DateTime CreatedDate { get; private set; }
public User ModifiedBy { get; private set; }
public DateTime ModifiedDate { get; private set; }
public SpritePalette(
string name)
{
this.Name = name;
this.IsPublic = false;
_colors = new SpritePaletteColors();
}
internal void UpdateId(string value)
{
Validate.IsNotEmpty(value, "Id is required.");
this.Id = value;
}
public void UpdateName(string value)
{
this.Name = value;
}
public void MarkAsCreated(User value)
{
this.CreatedBy = value;
this.CreatedDate = DateTime.UtcNow;
}
public void MarkAsModified(User value)
{
this.ModifiedBy = value;
this.ModifiedDate = DateTime.UtcNow;
}
public bool HasColor(string color)
{
return _colors.HasColor(color);
}
public void AddColor(string color)
{
_colors.AddColor(color);
}
public void RemoveColor(string color)
{
_colors.RemoveColor(color);
}
public void UpdateIsPublic(bool value)
{
this.IsPublic = value;
}
}
我的員工兩種方法,一種用於標記爲創建的模型,其更新CreatedBy和CreatedDate,以及類似的方法進行標記模型經修改。
說到DDD,這可以接受嗎?處理更新審計屬性的更好方法是什麼?有更好的方法,即使用事件嗎?
我承認這有點主觀,但會感謝任何人可以提供幫助!