2017-02-09 59 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

相關問題