2014-02-18 66 views
0

您好我正在處理ASP.NET MVC項目。目前,我正在使用Model第一種方法,我曾使用ADO.NET模型手動添加數據庫。目前我有4個數據庫,並且在web.config文件中有4個連接字符串。在ASP.NET MVC中動態生成連接字符串

自從我開發環境開始工作以來一直很好。但是現在我需要將我的代碼移到現場,問題是,現場我們有40到50個數據庫。

所以我應該做的是,當用戶想要連接到特定的數據庫時動態生成連接字符串。

我有這樣的存儲過程,它返回連接字符串和數據庫名稱。

例如,如果我有4個數據庫名稱,例如db1,db2,db3和db4,則需要將此數據庫名稱與我的存儲過程結果數據庫名稱進行比較,如果兩者相等,則生成等同於該數據庫名稱的連接字符串。

而且我還需要把它放在會話中,一旦我生成連接字符串,所以不需要爲特定會話再次生成連接字符串。

有人可以幫助我嗎?

+0

看看SqlConnectionBuilder .... http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder(v=vs.110).aspx。請記住,MVC在技術上沒有會話概念。以任何形式的會話存儲連接字符串並不是出於安全原因的好主意,但會話也不可伸縮。也許你需要在這裏考慮你的方法,如果有必要的話。 –

+1

如果將所有這些連接字符串存儲在web.config中,我可以知道這個問題嗎? – ramiramilu

+0

@ramiramilu你的意思是我需要在web.config文件中存儲所有40個連接字符串?然後我需要爲所有數據庫添加連接字符串,也因爲我有存儲過程返回連接字符串,我決定動態生成。 – Ajay

回答

0

EF DbContext作爲constructor parameter採用連接字符串或連接字符串本身的名稱。因此,在創建任何類型的連接字符串時都沒有問題,並在創建DdContext時提供此類連接字符串。

在我們的應用程序中,我們有很多租戶,並且每個租戶都有一個數據庫。對於每個請求,我們查找它是哪個租戶,並從Settings DB向Tenant自己的數據庫提供連接字符串。

我沒有與Ado.Net合作過,但從我在Google看到的,這與Entity Framework非常相似(或基於)。因此,根據您的特定實現,必須有一種方法可以將數據庫連接字符串提供給web.config