2017-02-09 62 views
0

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

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

你在做什么是要求别人为你做的辛苦工作。你已经尝试了什么?你能回答你自己的问题吗? 如果代码共享实体,您可以创建一个单独的项目,将其编译为一个。DLL和项目之间分享。 – Stralos

+1

“People”,“Buildings”和“Floors”是否都是相同的数据?即'ITServices.People'中的一行可能与'PackageHandling.People'中的同一个人?如果是这样,我不明白#2是一种合理的方法。此外,您的#3解决方案可以具有参照完整性,如果数据库系统支持同义词,则不需要多个上下文。在这种情况下,它在功能上与#1非常相似。而且你需要在共享表上找出合适的锁定机制。 –

+0

谢谢@ setphen.vakil。我正在研究同义词的想法 – iamnapo

回答

0

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

Lastyly,“创建共享表的数据库和其他数据库,为每个应用程序”,这种想法是那么好:)

愿你可以使用N层artitecture至少3层(商务演示,数据)和

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

数据层==>很多Db的语境

介绍==> MVC项目

我认为解决方案3和与N层Artch失去耦合连接是最好的方法。

最后你可以找到; 工作单元,Ninject Freamwork,N层话题

注:Alwasy代码优先:)我喜欢的Code First风格了:d

一个愉快的一天:)

,如果您想要我可以显示几个N层结构课程链接“CodeProject.com”和Stackoverflow

相关问题