小编Joh*_*ohn的帖子

DDD中的工厂,服务,存储库

我有一些相关问题的工厂,仓库和服务在DDD.我有以下实体:文件夹,文件,FileData.

在我看来,"文件夹"是一个聚合根,应该负责创建File和FileData对象.

所以我的第一个问题是我应该使用工厂来创建这个聚合还是由存储库来决定?这时我有2个存储库,一个用于Folder,另一个用于File,但在我看来,我应该将它们合并在一起.以下代码段显示了我的文件夹存储库,它位于我的基础架构层中:

public class FolderRepository : IFolderRepository
{
    #region Fields

    private readonly IFolderContext _context;
    private readonly IUnitOfWork _unitOfWork;

    #endregion

    #region Constructor

    public FolderRepository(IUnitOfWork unitOfWork)
    {
        _unitOfWork = unitOfWork;
        _context = _unitOfWork.Context as IFolderContext;
    }

    #endregion

    public IUnitOfWork UnitOfWork
    {
        get { return _unitOfWork; }
    }

    public IQueryable<Folder> All
    {
        get { return _context.Folders; }
    }

    public Folder Find(Guid id)
    {
        return _context.Folders.Find(id);
    } …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design ddd-repositories factory-pattern ddd-service

3
推荐指数
1
解决办法
5100
查看次数

聚合根,他们应该负责删除子对象吗?

关于聚合根,我有一个问题,他们是否应该负责删除子对象,还是应该归到存储库?如果我想通过其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
}
Run Code Online (Sandbox Code Playgroud)

文件类:

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; } …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design ddd-repositories aggregateroot

3
推荐指数
1
解决办法
1363
查看次数