我正在处理我想要安装在不同业务中的应用程序。每个业务可能都需要此应用程序的不同部分。例如,应用程序具有以下模块:公司管理,任务管理和簿记管理。一家企业希望我只安装公司管理和簿记管理模块,其他人希望安装所有这三个模块。我应该拆分我的edmx吗?
这些模块(我有更多的3个)坐在一个数据库(历史原因),我不喜欢数据库的安全。此外,还有一个依赖 - 每个模块都应该知道公司的管理模式,因为它拥有所有客户,工人供应商等等的清单。除此之外,每个模块都可以视为一个安全的应用程序。
该应用程序是用C#.Net编写的,我使用的是实体框架。这里是我的解决方案的项目清单:
- Data文件夹
- MyApp.Data.EF4:包含工作和库模式的单元的EDMX和实施。我正在使用POCO,因此edmx不会创建实体。仅包含对MyApp.Common的引用。
- 模块文件夹
- 公共文件夹
- MyApp.Common:包含MyApp.Data.EF4项目所有教学贯彻接口。
- MyApp.Company.Domain:包含公司模块的域对象(POCO)。这个项目没有参考任何项目。
- MyApp.Company.Services.Contract:包含此模块公开的服务的接口。
- MyApp.Company.Services:包含服务实现。
- 任务文件夹
- MyApp.Tasks.Domain:包含域对象(波苏斯)为任务模块。该项目仅引用MyApp.Company.Domain。
- MyApp.Tasks.Services.Contract:包含此模块公开的服务的接口。
- MyApp.Tasks.Services:包含服务实现。
- 簿记夹
- MyApp.Bookkeeping.Domain:包含域对象(波苏斯)为记帐模块。该项目仅引用MyApp.Company.Domain。
- MyApp.Bookkeeping.Services.Contract:包含此模块公开的服务的接口。
- MyApp.Tasks。服务:包含服务实现。
- 公共文件夹
- 演示文件夹
- MyApp.Web:网络具有所有其它模块服务,合同和域参考应用。这个特定的Web应用程序应该涵盖我所有模块的演示文稿这意味着,只有需要所有模块的企业才能获得此Web应用程序。
因为我有真正大的EDMX,让他真的很难管理,我想到了分裂EDMX使每个模块都会有自己的EDMX。这将导致MyApp.Web项目为每个模块保存工作单元(因为MyApp.Web使用所有模块,因此需要所有工作单元)。
我在想是否将edmx分割成不同的edmxs对我来说是一个好习惯。我会对任何解释进行解释,这些解释将帮助我确定这是否是一个好主意,或者对我的情况采取任何好的解决方法。
我不认为将其拆分成多个edmx文件会带给你任何性能优势。我在这里看到的唯一优势是易于管理。 –
@Ashshin Gh:这会伤害表现吗?我无法在一个edmx中管理大量的语句。是不可能的。 – Naor
:我不知道它是否会影响性能。我认为多个EDMX文件的唯一优点是易于管理,但是在我自己的项目中,我通常从db生成EDMX,就是这样。只要数据库没有变化,EDMX就不会触及。 –