我有一些相关问题的工厂,仓库和服务在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
关于聚合根,我有一个问题,他们是否应该负责删除子对象,还是应该归到存储库?如果我想通过其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) ddd-service ×1