【发布时间】:2011-09-28 00:42:51
【问题描述】:
继续这些辩论:
DDD - the rule that Entities can't access Repositories directly
Is it ok for entities to access repositories?
在某些情况下,域访问存储库感觉更好。以这个例子为例,假设我需要数据库中的 TaskStatus 表,其中包含用于报告目的的描述:
public class TaskStatus
{
public long Id {get;set;}
public string Description {get;set;}
}
public class Task
{
public long Id {get;set;}
public string Description {get;set;}
public TaskStatus Status {get;set;}
public void CompleteTask()
{
ITaskStatusReposity repository = ObjectFactory.GetInstace<ITaskStatusReposity>(); //Or whatever DI you do.
Status = repository.LoadById(Constants.CompletedTaskStatusId);
}
}
我知道我可以拥有 CompletedTaskStatus 和 OpenTaskStatus 对象,但在某些情况下这是不必要的,并且可能导致类爆炸。
无论如何,如果不是为了这类事情,为什么存储库接口存储在域中?
【问题讨论】:
标签: architecture domain-driven-design repository-pattern ddd-repositories