我有一个ASP.NET Web应用程序项目,当用户登录时,根据用户登录,我们从数据库获得不同的连接字符串名称并将其存储在会话中。
在数据库访问层
我创建了一个名为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
}
如果有任何其他解决方案,它表现得很慢。
场景: - 我每次使用登录时都会从数据库中设置动态连接字符串名称,如果从印度登录,那么如果从印度登录,则将其数据插入到美国数据库,然后将其数据插入到美国数据库中如何将此动态连接名称发送到数据访问层
答案 0 :(得分:0)
您好为用户创建一个密封类并保存连接字符串,因为密封类只能有一个实例(每个用户)不会出现创建多个实例以获得相同连接字符串的问题我建议您将连接字符串作为字符串参数从BLL传递到DAL而不是在DAL中读取它(只需从Web配置读取连接字符串到BLL的构造函数类或在DAL中读取您的愿望)