2017-06-19 76 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会是一个很大的妥协。 –

相关问题