我希望在新项目中使用 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/