实体框架中的表重叠数据库上下文6代码优先

Atr*_*gma 7 c# sql database entity-framework

是否有可能创建一个重叠数据库上下文的表,以避免将数据库上下文放在库中或为相同的事情创建不同的表前缀/不同的数据库?

详细说明,这是CRM系统的一个例子.

数据库

- Pages
- Categories
- BlogEntries
- Comments
- Products
- Profiles
- Licenses
- Activations
- Invoices
- Customers
Run Code Online (Sandbox Code Playgroud)

DB上下文

Activation Server Context使用

- Products
- Licenses
- Activations
- Customers
Run Code Online (Sandbox Code Playgroud)

客户关系上下文使用

- Products
- Customers
- Invoices
Run Code Online (Sandbox Code Playgroud)

前端网站上下文使用

- Products
- Customers
- Invoices
- Profiles
- Pages
- Categories
- BlogEntries
- Comments
Run Code Online (Sandbox Code Playgroud)

解决方案

我能想到这样做的唯一方法......

  • 创建一个具有一个db上下文的库,该上下文可以解决所有表(包括迁移等) - >关注点分离?
  • 使用前缀/数据库拆分将相关表拆分到不同的上下文中 - >相关表条目不是"捆绑在一起"(我必须使用guid来避免重复,同时在一个项目中使用多个上下文)

Bre*_*een 1

这是我避免领域驱动设计的主要原因是因为这样的问题。

我只有一个大的上下文......它是一个存储库包装器,而您的存储库就是它。如果您将所有内容存储在一个大数据库中,那么您的上下文/存储库应该是一个大存储库,IMO。

在我看来,这不是关注点分离问题。从某种意义上说,上下文仅包装存储库关注点,而不是围绕这些实体的业务逻辑......它做了一件事:从永久存储中序列化和反序列化数据/实体。

大约 4 年前,我们尝试了领域驱动设计,我们发现我们反复进行这些关于“产品属于领域 1 还是领域 2”的毫无意义的争论。这对生产力来说是一个真正的拖累,实际上是因为 DDD 并不真正适合大多数现实世界的场景,因为重叠是常态而不是例外。