实体框架体系结构中的有界(Db)上下文

use*_*016 5 .net architecture domain-driven-design entity-framework

我刚看过Julie Lermans关于在EF中使用有界上下文的视频(http://www.pluralsight.com/training/Courses/TableOfContents/efarchitecture),我现在正试图找出实现它的最佳方法(使用POCO) .我看到的两个选项是要么有一个edmx模型定义所有内容,然后手工绘制DbContexts以包含适当的实体,或者为每个上下文分别使用edmx模型并使用自动创建的DbContexts.

有没有人认为哪个是最好的或任何利弊?

恕我直言:对于单个模型,它是更少的类和更多的代码重用(尽管这些类是自动创建的,所以实际上它只是手动复制的额外功能),但我会有很多在一个地方的课程和需要专业的课程,每个课程都必须有不同的名称.例如Customer,CustomerForFunctionalityX,CustomerForFunctionalityB.

对于单独的模型,我可以对进入上下文的内容更严格,因为删除属性不需要是一个全新的实体,并且我可以根据需要命名所有内容(即,即使所有模型都可以使用Customer对象)它在模型之间有所不同),但是现在每个上下文都有完全不同的实体,即使它们都只是映射到同一个表 - 这也使得在上下文之间传递它们变得更加困难(但是这不应该经常需要,否则它不需要它意味着上下文已被定义为错误).

Mar*_*oek 0

我建议您阅读什么是有界上下文以及它们试图解决什么问题。从有界上下文定义来看

\n\n
\n

明确定义模型应用的上下文。根据团队组织、应用程序特定部分的使用以及代码库和数据库模式等物理表现形式明确设置边界。保持模型在这些范围内严格一致,但不要因外部问题而分心或困惑。

\n
\n\n

拥有单个 EDMX 模型会违反该明确的边界。您可能可以想象当来自不同上下文的团队在同一个 EDMX 模型上工作时可能会发生的摩擦。\n但是,在您的情况下,您可能会觉得上下文之间的显式边界和集成的成本太高。使用共享内核将允许您在上下文之间共享 EDMX 模型。

\n