首先是DDD数据库。如何处理聚合

时间:2012-08-29 12:23:37

标签: c# entity-framework domain-driven-design

我正在尝试学习DDD的概念。我做了一个项目,我使用数据库第一种方法。 在基础设施中,我添加了一个edmx文件,我选择自动生成entites。现在在“域”中我正在尝试创建聚合。

但是我遇到了一些问题。我正在尝试创建一个名为“User”的聚合,但是用户已经存在于自动生成的ef中。我是否应该将聚合“用户”重命名为其他内容,并且当从db地图获取数据时,它将从db引用到聚合。

我做错了?或者我不应该自动生成实体或者是enties聚合?

Plz建议和帮助。

enter image description here

2 个答案:

答案 0 :(得分:6)

如果您想要忠实于DDD,则应该将域对象建模为独立于持久性解决方案。 DDD通过存储库处理持久性。不要使用EF生成的“实体”作为您的域模型;而是设计自己的模型并实现一个使用EF来保持持久性的存储库。

答案 1 :(得分:3)

从我的角度来看,域驱动设计和“数据库优先”是相反的。域驱动设计侧重于复杂行为,数据模型侧重于数据的静态结构。

如果我有幸从一个干净的情况开始,我不会先通过创建遗留数据库使其变得更加复杂。考虑到DDD面向复杂的领域,发现和学习是这个过程的一部分。

为了支持持续学习过程,最好依靠专为进化而设计的软件组件(如面向对象的域模型,可以在廉价的单元测试中)而不是数据库设计,其演变肯定更昂贵。

一开始没人能做正确的事。所以我最好从一点一点的费用开始。