Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 连接字符串访问_Asp.net_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

Asp.net 连接字符串访问

Asp.net 连接字符串访问,asp.net,asp.net-mvc,asp.net-web-api,Asp.net,Asp.net Mvc,Asp.net Web Api,从Web.config文件获取连接字符串的最佳方法是什么。我知道它可以在App_start中的Global.asax中使用 public class Global : System.Web.HttpApplication { public static readonly string ConnectionString = "connection information"; . . . } 但是,如何在多个程序集中获取静态变量 假设我的web应用程序有4个程序集

从Web.config文件获取连接字符串的最佳方法是什么。我知道它可以在App_start中的Global.asax中使用

public class Global : System.Web.HttpApplication
{
    public static 
   readonly string ConnectionString = "connection information";

    . . .    
}
但是,如何在多个程序集中获取静态变量

假设我的web应用程序有4个程序集(UI、服务层、业务层、数据层),我希望访问DataLayer(这是一个单独的程序集)

我不想将配置读取放在数据层构造函数中


我想使用httpapplicationvariable/static变量读取数据层中的连接字符串值


有什么建议吗?

您可以为您的设置创建一个合同:

public IApplicationSettings
{
    string ConnectionString { get; }

    // any other setting variable 
}
然后在代码中使用这个抽象

public class MyRepository 
{ 
    private string conncetionString;

    public MyRepository(IApplicationSettings settings)
    {
         this.conncetionString = settings.ConnectionString;
    }
}

通过这种方式,您将隐藏对
ConfigurationManager
等内容的依赖关系,以及在应用程序中存储设置的方式。如果您使用的是IoC,那么您可以控制实例的生命周期。

“我想使用HttpApplication变量/静态变量来读取数据层中的连接字符串值。”,这是错误的方法。您正在使层与ASP.Net紧密耦合。如果您必须在不同的应用程序(如WinForm或WPF)中使用层,该怎么办?你不应该那样做。将连接字符串传递给构造函数是一种更好的方法,IMHO.Im不使用实体框架