2

我正在开发一个我想在不同企业中安装的应用程序。每个企业可能需要此应用程序的不同部分。例如,该应用程序具有以下模块:公司管理、任务管理和簿记管理。一个企业希望我只安装公司管理和簿记管理模块,而其他企业希望安装所有三个模块。

这些模块(我有超过 3 个)位于一个数据库中(历史原因),我不希望将数据库分开。此外,存在依赖关系——每个模块都应该了解公司管理模型,因为它拥有所有客户、工人供应商等列表。除此之外,每个模块都可以被视为一个单独的应用程序。

该应用程序是用 C# .Net 编写的,我正在使用实体框架。这是我的解决方案中的项目列表:

  1. 数据文件夹
    • MyApp.Data.EF4:包含工作单元和存储库模式的 edmx 和实现。我正在使用 POCO,因此 edmx 不会创建实体。仅包含对 MyApp.Common 的引用。
  2. 模块文件夹
    • 公用文件夹
      • MyApp.Common:包含要实现的 MyApp.Data.EF4 项目的所有接口。
      • MyApp.Company.Domain:包含 Company 模块的域对象 (POCO)。这个项目没有参考任何项目。
      • MyApp.Company.Services.Contract:包含此模块公开的服务的接口。
      • MyApp.Company.Services:包含服务实现。
    • 任务文件夹
      • MyApp.Tasks.Domain:包含任务模块的域对象 (POCO)。此项目仅引用 MyApp.Company.Domain。
      • MyApp.Tasks.Services.Contract:包含此模块公开的服务的接口。
      • MyApp.Tasks.Services:包含服务实现。
    • 簿记文件夹
      • MyApp.Bookkeeping.Domain:包含 Bookkeeping 模块的域对象 (POCO)。此项目仅引用 MyApp.Company.Domain。
      • MyApp.Bookkeeping.Services.Contract:包含此模块公开的服务的接口。
      • MyApp.Tasks.Services:包含服务实现。
  3. 演示文件夹
    • MyApp.Web:引用所有其他模块 Service、Contract 和 Domain 的 Web 应用程序。这个特定的网络应用程序应该涵盖我所有模块的演示。这意味着,只有需要所有模块的企业才能获得这个网络应用程序。

因为我的 edmx 真的很大,所以很难管理,所以我想把 edmx 拆分,让每个模块都有自己的 edmx。这将导致 MyApp.Web 项目为每个模块保存工作单元(因为 MyApp.Web 使用所有模块,因此需要所有工作单元)。

我正在考虑将 edmx 拆分为不同的 edmx 对我来说是否是一个好习惯。我会接受任何有助于我决定这是否是个好主意的解释,或者对我的情况有任何好的解决方法。

4

1 回答 1

0

我使用多个 emdx 文件,这是个好主意。它使系统的各个部分保持独立,这是一件好事。

但是,您的数据库中会有一部分可以从多个 edmx 文件中访问。它只是像这样结束:) 在这种情况下请注意,如果您更改数据库,那么您可能必须更新这些多个 edmx 文件。它不是障碍物,只是需要注意的事情。

话虽如此,如何:a)购买更多内存(硬件很便宜,程序员 很贵b)“冻结”旧的edmx并将新表放入新的emdx中,并且只进行增量更改

在更一般的层面上,如果你有一天不拆分你的 edmx,你的替代者会在 StackOverflow 上提出一个问题,其中包含以下行:“那些模块(我有超过 3 个)位于一个数据模型(edmx)中(历史原因)而且我不想破坏 edmx。” ;)

于 2013-06-26T02:36:09.967 回答