2013-10-31 72 views
1

我正在爲我們的客戶羣構建一個應用程序,他們都有預先存在的數據庫。企業所有者將能夠通過這個應用程序閱讀和報告他們的本地商業數據庫,所有數據都將針對他們的業務。帶有數百個數據庫連接的MVC應用程序

我打算做好以下工作:

  • 創建「主」帳戶數據庫來存儲所有客戶信息佔
  • 上傳現有數據庫到我們的服務器解決方案
  • 在登錄時,檢查對帳戶數據庫和加載適當的數據庫持續通過客戶端會話

我的問題是,是最好把每個數據連接作爲一個新的條目在web.config和只是引用connstrings整個應用程序關閉會話變量即:

  • 客戶端A登錄 - >使用數據庫A - >存儲DB_A_Connstring爲會話VAR
  • 客戶端B登錄 - >使用數據庫B - >商店DB_B_Connstring爲session var

或者還有更好的方法嗎?感謝您的意見。

編輯:我會注意到,每個數據庫將有一個GUID,我會不斷驗證連接對帳戶憑據,所以我不太在意這種方法的安全性,只是它的實現作爲一個可行的選擇。

回答

1

您多長時間一次添加/刪除數據庫?如果很少,web.config應該沒問題。如果經常,我只會將conn字符串存儲在web.config中的master數據庫中,並將每個客戶端數據庫的詳細信息存儲在表中。

雖然在再次閱讀您的問題後,對我而言,「數百」意味着將它們存儲在表中而不是Web.config中,即使它們從未更新過。我只是不想在配置文件中使用很多硬編碼的字符串。

+0

是的,理想情況下,我們希望自動化整個安裝過程...並且我們將每天/每週添加新的數據庫,因此將db數據存儲在帳戶數據庫中可能是更智能的方法 –

+0

一個簡短的問題...如果我要將所有客戶端數據庫信息存儲在帳戶數據庫中,是否需要將所有數據庫連接信息存儲在該用戶的會話變量中,可能在連接時暴露憑據及其所有數據? –

+0

沒有理由將其存儲在會話變量中。默認的線程池將爲您緩存所有連接,並根據conn字符串匹配它們。因此,只需正常創建/處理連接(使用從主數據庫加載的字符串),這樣來自同一公司的用戶將從再循環連接到同一個數據庫中受益。 –