加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

域驱动设计 – DDD和实现持久性

发布时间:2020-12-14 00:50:08 所属栏目:百科 来源:网络整理
导读:我第一次使用DDD(.Net)使我的脚变湿了,因为我重新构建了一个遗留企业应用程序的一些核心组件. 我想清除的是,我们如何在适当的DDD架构中实现持久性? 我意识到领域本身是持之以恒的,应该使用“普遍存在的语言”进行设计,当然不会被迫进入本月的DAC的限制甚至
我第一次使用DDD(.Net)使我的脚变湿了,因为我重新构建了一个遗留企业应用程序的一些核心组件.

我想清除的是,我们如何在适当的DDD架构中实现持久性?

我意识到领域本身是持之以恒的,应该使用“普遍存在的语言”进行设计,当然不会被迫进入本月的DAC的限制甚至物理数据库.

我正确的是,Repository Interfaces存在于Domain程序集中,但是Persistentory Implementation是否存在于持久层中?持久层包含对域层的引用,反之亦然?

我的实际存储库方法(CRUD)在哪里被调用?

Am I correct that the Repository Interfaces live within the Domain
assembly,but the Repository Implementations exist within the
persistence layer? The persistence layer contains a reference to the
Domain layer,never vice versa?

是的,这是一个很好的方法.

Where are my actual repository methods (CRUD) being called from?

考虑到CRUD这个术语可能是一个好主意,因为它是以数据为中心的,可能会引导你进入Generic Repository Trap. Repository有助于管理domain objects的中期和末期.Factories通常负责开始.请记住,当对象从数据库恢复时,它处于DDD视角的中间阶段.代码如下所示:

// beginning 
Customer preferredCustomer = CustomerFactory.CreatePreferred();
customersRepository.Add(preferredCustomer);

// middle life
IList<Customer> valuedCustomers = customersRepository.FindPrefered();

// end life
customersRepository.Archive(customer);

您可以直接从您的应用程序调用此代码.它可能值得下载并查看Evan的DDD Sample. Unit of Work模式通常用于处理交易和抽象您的ORM的选择.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读