Eko*_*tin 19 domain-driven-design repository
我第一次尝试使用DDD(在.Net中),因为我正在重新设计遗留企业应用程序的一些核心组件.
我想要澄清的是,我们如何在适当的DDD架构中实现持久性?
我意识到域名本身是持久性无知的,应该使用"普遍存在的语言"进行设计,当然不会强制进入本月DAC甚至物理数据库的约束.
我是否认为存储库接口存在于域程序集中,但存储库实现是否存在于持久层中?持久层包含对Domain层的引用,反之亦然?
我的实际存储库方法(CRUD)从哪里调用?
Dmi*_*try 15
我是否认为存储库接口存在于域程序集中,但存储库实现是否存在于持久层中?持久层包含对Domain层的引用,反之亦然?
是的,这是一个非常好的方法.
我的实际存储库方法(CRUD)从哪里调用?
不以CRUD术语思考可能是一个好主意,因为它太以数据为中心,可能会引导您进入Generic Repository Trap.存储库有助于管理域对象的中间和生命结束.工厂经常负责开始.请记住,当从数据库恢复对象时,它处于DDD视角的中期阶段.这就是代码的样子:
// beginning
Customer preferredCustomer = CustomerFactory.CreatePreferred();
customersRepository.Add(preferredCustomer);
// middle life
IList<Customer> valuedCustomers = customersRepository.FindPrefered();
// end life
customersRepository.Archive(customer);
Run Code Online (Sandbox Code Playgroud)
您可以直接从您的应用程序调用此代码.可能值得下载并查看Evan的DDD示例.工作单元模式通常用于处理交易和抽象您选择的ORM.