我们的几个应用程序使用下面示例中的多个数据库 - 每个数据库都在各自单独的 DBML 文件中。问题是,按照惯例,MVC 将它们都放在了namespace AppName.Models
导致类名冲突的地方。
这两个选项中哪一个是更好的解决方案,为什么:
1.) 将它们放在单独的命名空间中。为了让 stylecop/resharper 满意,他们会进入自己的子文件夹:
- /楷模
-
- /居住
-
-
- Live.dbml
-
-
-
- LiveDataContext.cs
-
-
- /CRM
-
-
- CRM.dbml
-
-
-
- CrmDataContext.cs
-
**但现在在代码中,它们的所有用途都必须是Live.Customer
和Crm.Customer
区分对象。
编辑:这个的另一个主要缺点是我没有看到专家使用文件夹中的子文件夹的其他示例代码Models
。最重要的是,为了保持Helper
文件代码重用的相同命名 - 即使只使用一个数据库的应用程序也需要一个子文件夹 in Models
,我当然从未见过有人在 MVC 中这样做
2.) 在一个或两个 DBML 设计器中为所有对象名称添加前缀。这是我目前的做法。Live 数据库有Customer
和Order
对象,而 Crm 数据库有CrmCustomer
和CrmOrder
。它们都位于相同的命名空间和/Models
文件夹中。然而,这有两个主要缺点:
- 访问子对象时有相当多的前缀冗余:
CrmCustomer.CrmOrders.First().CrmOrderType
Marsha Marsha Marsha - 在仅使用一个数据库的其他应用程序中,我们经常省略前缀 - 然后在代码重用或
Helper
文件期间,我们必须进行大量查找/替换。Helper
这在添加到每个应用程序的文件中尤其明显,例如错误/活动日志记录。
所以我想听听其他专家的意见,他们使用了这两种策略中的哪一种,或者完全是别的什么。数据库之间至少有一些名称冲突似乎很常见。谢谢
示例表名:
实时数据库:
- 顾客
- 命令
- 地址
- 电话
- 日志
- 其他 20 张桌子
内网数据库:
- 顾客
- 命令
- 地址
- 电话
- 日志
- 其他 20 张桌子
CRM 工具数据库:
- 顾客
- 命令
- 地址
- 电话
- 日志
- 其他 400 张桌子