domain-driven-design – 聚合根,它们应该负责删除子对象吗?

domain-driven-design – 聚合根,它们应该负责删除子对象吗?,第1张

概述关于聚合根,我有一个问题,他们是否应该负责删除子对象,还是应该归到存储库?如果我想通过其Id查询一个文件,我应该在我的存储库中为此创建一个特定方法,该怎么办? 我的聚合根的代码片段: public class Folder { #region Properties public Guid Id { get;set; } public Name { get;set; } 关于聚合根,我有一个问题,他们是否应该负责删除子对象,还是应该归到存储库?如果我想通过其ID查询一个文件,我应该在我的存储库中为此创建一个特定方法,该怎么办?

我的聚合根的代码片段:

public class Folder {   #region PropertIEs   public GuID ID { get;set; }   public name { get;set; }   public virtual ICollection<file> files { get;set; }   #endregion   #region Methods   public file Addfile(string type,string Title,bool share = false)   {     ///   }   #endregion}

文件类:

public class file{    #region PropertIEs    public virtual Folder Folder { get; set; }    public string Title { get; set; }    public string Type { get; set; }    public bool Shared { get; set; }    #endregion    #region Constructor    public file(Folder folder,string type,bool share = false)    {        ///    }    #endregion}

谢谢

解决方法 聚合根负责域不变量(参见 http://dddcommunity.org/library/vernon_2011/).

所以答案是肯定的,聚合根应该是唯一可以访问它聚合的对象的对象.这意味着没有其他对象应该获取对file的引用,并且该file不应该公开任何更改其自身状态的方法.

所有更改子对象状态的方法都应该由聚合根本身公开,因为它必须确保聚合不变量.

至于持久删除,我通常将域事件建模为.NET事件:在返回实体之前,这些事件由存储库订阅.因此,在事件处理程序中发生持久性逻辑(有关详细信息,请参阅http://epic.tesio.it/doc/manual/observable_entities.html)

总结

以上是内存溢出为你收集整理的domain-driven-design – 聚合根,它们应该负责删除子对象吗?全部内容,希望文章能够帮你解决domain-driven-design – 聚合根,它们应该负责删除子对象吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1048379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存