我們正在研究我們公司的應用程序套件。每個應用程序有不同的業務邏輯,但共享一些結構例如,一個應用程序用於「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