具有跨模式关系的数据库的多个 DataContext

Multiple DataContexts for a database with cross-schema relationships

场景:

我的任务是做一个桌面应用程序,它必须 运行 通过本地网络设置,这样数据库和后台部分必须驻留在服务器上,而 POS 客户端调用服务器进行操作.

数据库中有 64 个表和 8 个模式,其中一个模式中的表与其他模式的表之间存在关系。

架构

  1. 账户(会计科目表、交易记录、日记账、Bank/Cash/Deposit 凭证)
  2. 人力资源(部门和员工)
  3. 采购(采购订单、采购订单详细信息、采购 Returns 和详细信息)
  4. 销售额(销售额、销售详情、销售额 Returns 和详情、客户)
  5. 库存(产品、库存、成本变化历史、价格、库存 转移)
  6. 税收(税组、预扣税、商品及服务税等)
  7. 安全性(针对用户、权限和会话的日志记录)
  8. 商店(商店概况、终端、部分、货架、货架、箱)

备注: 有人担心,对于必须在网络上 运行 这样的大型数据库使用一个 DataContext,通过该模型导航会降低应用程序的性能。因此,我们应该分解数据上下文;为此,一种直观的策略是为数据库中的每个模式创建一个 DataContext(在本例中为 8 个),并通过服务层交换数据 to/fro 其他上下文。我的设计基于 DDD。

问题: 您认为分解给定场景的 DataContext 的适当策略应该是什么?我想了解有关该问题的经验丰富的见解。

PS。我在 .NET Framework 4.0 上使用 Entity Framework 5.0 作为客户端要求。

您的 domain/business 知识对于定义数据上下文的细分同样重要。在 DDD 中,您可以使用单一职责原则将子域(业务功能)分离到单独的有界上下文中。这对 POC 有好处,但我希望在生产中您需要将遗留系统(当前产品系统)视为另一个有界上下文。只是一个想法。