多个应用程序中共享实体(表)的最佳方法

时间:2017-02-09 15:08:51

标签: asp.net-mvc entity-framework linq database-design

我们正在研究我们公司的应用程序套件。每个应用程序都有不同的业务逻辑但共享一些结构例如,一个应用程序用于" IT服务"另一个用于"包装处理系统"在公司的不同建筑物之间。我们希望使用单独的asp.net mvc项目(实体框架Code-First)创建每个应用程序。但问题是所有应用程序都有一些类似的实体。例如,他们People中的所有实体都有BuildingsFloorsdbContext个实体。还有一些其他表与这个类似的表有关系 设计此应用程序的最佳方法是什么?

  1. 为所有应用程序创建单个数据库?什么是副作用?
  2. 为每个应用程序创建单独的数据库并复制相似的表格? (目前我们正在研究这个问题,但是我们应该编写一些SQL服务器作业来始终同步这些表。所以我不认为它是一个好的方法)
  3. 为每个应用程序创建共享表和另一个数据库的数据库。这将导致丢失表之间的关系,并产生多上下文应用程序(我更喜欢这个,但我用Code-First EF和linq读取它,不可能跨多个上下文查询)。
  4. 或其他什么?

1 个答案:

答案 0 :(得分:0)

我对Db管理系统非常感兴趣。我首先喜欢你的3个方法。所有这些都有不同的优点和缺点。如果你有这个数据库的大数据,你可以使用像2这样的解决方案的单独数据库。但是你必须开发你所说的同步机制。如果我们看一下单独db的另一个优点,当一个db失败或损坏时,另一个db可以工作:)但是一些离开数据可能是不可用的,直到错误修复为止。这对大型系统有利。

最后,"为每个应用程序创建一个共享表和另一个数据库的数据库",这个想法非常好:)

您是否可以使用至少3层N-Tier artitecture(业务演示数据)和

业务内容==>你的工人职能

数据层==>许多Db上下文

演示==> MVC项目

我认为解决方案3和失去耦合连接与N-Tier Artch 是最佳方式。

最后你可以去找; 工作单位,Ninject Freamwork,N-Tier主题

注意:Alwasy代码优先:)我喜欢Code First风格:D

度过愉快的一天:)

如果你愿意,我可以展示一些N层结构课程链接" CodeProject.com"和Stackoverflow