Domain driven design 可以聚合根实体调用存储库
聚合根实体是否可以有一个方法来调用存储库 我知道这不应该,但我想得到证实,因为埃里克的书也没有说清楚:( 还有一件事,我在哪里可以得到域驱动设计的单元测试示例?可以?-是的 应该吗?-不 但是,所有答案都是上下文相关的,您不提供您的答案Domain driven design 可以聚合根实体调用存储库,domain-driven-design,Domain Driven Design,聚合根实体是否可以有一个方法来调用存储库 我知道这不应该,但我想得到证实,因为埃里克的书也没有说清楚:( 还有一件事,我在哪里可以得到域驱动设计的单元测试示例?可以?-是的 应该吗?-不 但是,所有答案都是上下文相关的,您不提供您的答案 一般的建议是寻找“服务”或“规范”类型。这是一个有点宗教色彩的问题。 一些人认为这没有问题,而另一些人可能认为这样做是异端邪说 虽然我通常总是让我的存储库远离我的域模型(并且有一个上游服务对象处理存储库),但我有一个项目“需要”从域模型访问存储库。 这是因为域对
一般的建议是寻找“服务”或“规范”类型。这是一个有点宗教色彩的问题。 一些人认为这没有问题,而另一些人可能认为这样做是异端邪说 虽然我通常总是让我的存储库远离我的域模型(并且有一个上游服务对象处理存储库),但我有一个项目“需要”从域模型访问存储库。 这是因为域对象需要基于业务逻辑=>使用规范对象/Linq到nHibernate(如何过滤属于该域对象的数据的责任和知识)检索特定数据和/或性能原因 这样做的一个警告是如何将对存储库的引用获取到域对象——在这种情况下,我使用了IOC工具的构造函数注入
您是否应该这样做实际上取决于您的解决方案/用例/正在使用的技术等。行为是什么。Eric从一个名为“QueryService”的经纪帐户实体中调用类似于存储库的实用程序。他提到,对于一个真正的项目来说,这不是一个好的设计。那么您该怎么做
public class Clerk
{
public Clerk()
{
}
//Store Report in Database
public void File(Report);
{
ReportRepository.Add(Report);
}
}
您可以这样做,但最好告诉店员使用哪个存储库
public class Clerk
{
private IReportRepository _reportRepository;
public Clerk(IReportRepository ReportRepository)
{
this._reportRepository = ReportRepository
}
//Store Report in Database
public void File(Report);
{
this._reportRepository.Add(Report);
}
}
我不想说得太密集或者其他什么,但是我们应该知道Eric是谁吗?是的,DDD+Eric=Eric Evans,每个人都知道。另请参见:谢谢Martin的回复,我也认为Enities不应该调用repository,但在一本书中,作者给出了一个例子,他从Person实体调用repository,这本书是Martin Fowler的“企业应用程序架构模式”。请提供建议