entity-framework - Entity Framework 代码优先映射如何反射(reflect)域驱动设计?

标签 entity-framework domain-driven-design entity ef-code-first

我希望在新项目中使用 Entity Framework 代码优先。所以我决定做一些研究并构建一些演示,以便我可以看到它是如何做的。通过,我有一个主要问题,或者可能还有更多我不清楚的问题,涉及 Entity Framework 代码优先映射到实体和域驱动设计的方式。

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

没关系,但 Entity Framework 代码优先映射似乎像实体之间的关系方式一样工作。那么两者如何共存呢?

举个例子(在领域驱动设计方面思考):

期刊 包含 JournalEnty 包含 任务、问题、笔记

斜体字是实体。在某种意义上,经过分析,我会说 journal 是聚合根 聚合日志和日志条目,因为这是一个直接的组合。每个任务都包含一个小时值,以了解完成任务需要多少小时,因此有很多方法可以计算总小时数以及由此产生的工资。该日志具有小时费率属性。

其他实体都是一个聚合根,它们可能有对日志条目的引用,因此我们知道任务、注释和问题属于哪里。

但问题来了…… Entity Framework 代码优先映射如何反射(reflect)这一点?从直观的角度来看,我们会说日志包含一个日志条目,而日志条目包含注释、问题和任务。但从 DDD 看来,情况可能并非如此。如果我错了,请纠正我,但代码优先像关系数据库一样工作。

那么我们如何在 code-first 中映射上面的例子呢?

非常感谢。

最佳答案

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

这是ScottGu关于它的博客文章。

关于entity-framework - Entity Framework 代码优先映射如何反射(reflect)域驱动设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837609/

相关文章:

c# - Entity Framework 问题 "The table/view ' 没有定义主键。”

php - 没有二传手的学说

design-patterns - 将 CQRS 与 DDD 相结合?

Java XML处理实体问题?

c# - 如何在 Entity Framework 迁移中获取当前连接字符串?

c# - 将 LINQ .Distinct() 与 DateTime 一起使用 - 仅选择日期的第一个实例

c# - 添加 Controller 时无法检索模型的元数据

domain-driven-design - 值对象与实体

java - 我们可以将实体转换为 dto/pojo 对象吗?

c# - 如何快速更新ADO实体?