2017-06-19 77 views
1

共享動態連接串的名字我有一個ASP.NET Web應用程序項目中,當過用戶登錄,可根據用戶登錄,我們得到具有不同的連接數據庫中的字符串名稱並將其存儲在會話中。如何從asp.net應用程序類libary(數據訪問層)

在數據庫訪問層

我創建了一個類名ShareSession

public class ShareSession 
{ 

    public string ConnectionString1 { get; set; } 
    public string ConnectionString2 { get; set; } 


    public ShareSession() 
    { 
     try 
     { 
      ConnectionString1 = Convert.ToString(HttpContext.Current.Session["ConnectionStringname1"]); 
      ConnectionString2 = Convert.ToString(HttpContext.Current.Session["ConnectionStringname2"]); 
     } 
     catch (Exception) 
     { 
      HttpContext.Current.Response.Redirect("~/DashBoard/Login.aspx"); 
      throw; 
     } 
    } 


} 

當訪問這個對象,我只是創建該類的對象。

ShareSession objShareSession = new ShareSession(); 

var Connection_Database = Convert.ToString(objShareSession.ConnectionString1); 



using (SqlConnection conn = new SqlConnection(Convert.ToString(ConfigurationManager.ConnectionStrings[Connection_Database].ConnectionString))) 
{ 
// Database Logic 
} 

它表現緩慢有沒有其他的解決方案。

情景: - 我從數據庫每次設置動態連接字符串名稱時,使用登錄它具有標準化不同區域的數據庫,如果來自印度一個登錄那麼他的數據將在印度數據庫插入,如果他從美國入口那麼他的數據插入USA數據庫,在這種情況下我怎麼能發送連接到數據訪問層的這種動態名稱

+0

閱讀https://stackoverflow.com/a/8422186/34092 – mjwills

+1

是什麼讓你覺得這是造成緩慢?您是否分析了您的應用程序以確定其速度緩慢? –

+0

嗨mjwills我的問題不是那麼簡單理解它我設置動態連接字符串名稱從數據庫每次使用登錄時它有不同的區域數據庫進行規範化如果從印度一個登錄然後他的數據將被插入印度數據庫,如果他從美國登錄那麼他的數據插入到美國的數據庫,在這種情況下我怎麼可以給這種連接動態名稱將數據訪問層 – Saineshwar

回答

0

您好爲User密封類和保存連接字符串有自密封類只能有1個實例(每用戶)不會有創建多個實例,以獲得相同的連接字符串接下來我會建議你通過連接字符串從BLL字符串參數,而不是到DAL的DAL閱讀它的問題(剛看完ŧ他從網絡配置連接字符串到BLL的構造函數類,或者在你想要的DAL中)

+0

但它是好的傳遞連接字符串名稱作爲參數在每個方法 – Saineshwar

+0

它不重要只是確保您傳遞它從BLL而不是從表示層如果你是關心,那麼你可以初始化連接字符串在特定DAL的構造函數其再次對你,我不認爲從BLL傳遞連接字符串DAL會是一個很大的妥協。 –

相關問題