我们正在研究我们公司的应用程序套件。每个应用程序有不同的业务逻辑,但共享一些结构例如,一个应用程序用于“IT服务”,另一个用于公司不同建筑物之间的“包装处理系统”。我们希望使用单独的asp.net mvc项目(实体框架Code-First)创建每个应用程序。但问题是所有的应用程序都有一些类似的实体。例如,他们都有People
,Buildings
和Floors
其实体dbContext
。并且还有一些其他表与此类似的表有关系 设计此应用程序的最佳方法是什么?多个应用程序中共享实体(表)的最佳方法
- 为所有应用程序创建单个数据库?什么是副作用?
- 为每个应用程序创建单独的数据库并复制类似的表? (目前我们正在处理这个问题,但我们应该编写一些SQL服务器作业来始终同步这些表,因此我认为它不是一个好方法)
- 为每个应用程序的共享表和另一个数据库创建一个数据库。这会导致表之间的关系丢失,也会产生多上下文应用程序(我更喜欢这种方式,但是我使用Code-First EF和linq阅读过,不可能跨多个上下文查询)
- 或其他内容?
你在做什么是要求别人为你做的辛苦工作。你已经尝试了什么?你能回答你自己的问题吗? 如果代码共享实体,您可以创建一个单独的项目,将其编译为一个。DLL和项目之间分享。 – Stralos
“People”,“Buildings”和“Floors”是否都是相同的数据?即'ITServices.People'中的一行可能与'PackageHandling.People'中的同一个人?如果是这样,我不明白#2是一种合理的方法。此外,您的#3解决方案可以具有参照完整性,如果数据库系统支持同义词,则不需要多个上下文。在这种情况下,它在功能上与#1非常相似。而且你需要在共享表上找出合适的锁定机制。 –
谢谢@ setphen.vakil。我正在研究同义词的想法 – iamnapo