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

时间:2013-07-01 17:59:39

标签: c# sql database entity-framework

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

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

数据库

- Pages
- Categories
- BlogEntries
- Comments
- Products
- Profiles
- Licenses
- Activations
- Invoices
- Customers

数据库上下文

激活服务器上下文使用

- Products
- Licenses
- Activations
- Customers

客户关系上下文使用

- Products
- Customers
- Invoices

前端网站上下文使用

- Products
- Customers
- Invoices
- Profiles
- Pages
- Categories
- BlogEntries
- Comments

解决方案

我能想到的唯一方法......

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

1 个答案:

答案 0 :(得分:1)

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

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

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

我们在大约4年前通过域驱动设计进行了实验,我们发现我们反复讨论“产品属于域1还是域2”这些相当无意义的争论。这是对生产力的真正拖累,这真的是因为DDD并不真正适合大多数现实世界的场景,因为重叠是常态而非例外。