Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design 可以聚合根实体调用存储库_Domain Driven Design - Fatal编程技术网

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的“企业应用程序架构模式”。请提供建议