相关疑难解决方法(0)

DDD - 实体无法直接访问存储库的规则

在领域驱动设计,似乎有很多协议,任何单位不得直接访问存储库.

这是来自Eric Evans Domain Driven Design的书,还是来自其他地方?

对于它背后的推理,哪里有一些很好的解释?

编辑:澄清:我不是在谈论将数据访问分离到业务逻辑的单独层的经典OO实践 - 我在谈论DDD中的特定安排,实体不应该与数据对话访问层(即它们不应该包含对Repository对象的引用)

更新:我给了BacceSR赏金,因为他的回答似乎最接近,但我仍然对这个问题一无所知.如果它有这么重要的原则,肯定会在网上有一些关于它的好文章吗?

更新:2013年3月,关于这个问题的投票意味着人们对此很感兴趣,即使有很多答案,我仍然认为如果人们有这方面的想法,还有更多的空间.

oop domain-driven-design s#arp-architecture repository-pattern

166
推荐指数
6
解决办法
3万
查看次数

实体可以访问存储库吗?

我刚刚开始使用DDD,所以这可能是个愚蠢的问题......

是否可以让实体访问存储库(通过某个IRepository接口)在运行时获取值?例如,我想对属性强制执行"默认"选择:

class Person {
    private Company _employer;

    public Company Employer {
        get { return _employer; }
        set { 
            if(value != null) {
                _employer = value;
            } else {
                _employer = employerRepository.GetDefaultEmployer();
            }
        }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,做这样的事情是对DDD原则的可怕违反.如果不是,我的下一个问题是提供存储库使用的最佳方式是什么?是否应该在创建Person对象时提供?

谢谢,P

domain-driven-design ddd-repositories repository-pattern

25
推荐指数
3
解决办法
7401
查看次数