实体框架代码优先映射如何反映域驱动设计?

Rus*_*ino 7 entity domain-driven-design entity-framework ef-code-first

我希望将Entity Framework Code-first用于新项目.所以我决定做一些研究并构建一些演示,以便我可以看到它是如何做的.通过,我有一个主要问题或者可能更多我不清楚的事情涉及实体框架代码首先映射到实体和域驱动设计的方式.

在构建应用程序时,我们定义域实体.(我们根据所听到的业务情况定义聚合根并为它们创建存储库)

没关系,但实体框架代码优先映射似乎像实体之间的关系方式.那么两者如何共存?

作为一个例子(在域驱动设计方面思考):

Journal 包含 JournalEnty 包含 任务,问题注释

斜体字是实体.在分析后,我会说,期刊是集合期刊和期刊的集合根,因为这是一个直接的组合.每个任务都包含一个小时值,以便知道完成任务所花费的时间,因此有很多方法可以计算总小时数以及来自此的工资.该期刊有小时费率属性.

其他实体都是聚合根,他们可能会引用journalentry,因此我们知道任务,注释和问题的所在.

但问题出在这里..实体框架代码优先映射如何反映这一点?从直观的角度来看,我们会说日志包含日记条目,日记条目包含注释,问题和任务.但是从DDD的角度来看,可能并非如此.如果我错了,请纠正我,但代码优先工作就像关系数据库一样.

那么我们如何在代码优先中映射上面的示例呢?

十分感谢.

Dan*_*nil 2


我认为如果每个域实体在数据库中都有相应的表也不错。这并不意味着它是关系结构,因为 Journal 对象具有 JournalEntity 属性(在关系结构中,journalEntity 仅具有 JournalID)。此外,可以将对象层次结构映射到一张表并在映射中创建复杂类型。这意味着您可以拥有比按表分类更复杂的映射场景。

这是ScottGu 的博客文章。