访问数据层中的连接字符串

时间:2018-08-01 07:30:21

标签: c# asp.net-web-api asp.net-core

我目前正在.NET Core中开发Web API。我的解决方案中有三个项目,带有以下参考文献:

Web->服务-> DataAccess

因此,Web层没有对DataAccess层的直接引用。

我的问题是:在具有三层结构的这种类型的体系结构中,获取连接字符串的正确方法是什么?我已经看过书,但是找不到任何好的解决方案可以在第三层访问我的连接字符串,只是因为Web层没有对第三层的引用。

我遇到了这种方法:

services.Configure<ConnectionConfig>(Configuration.GetSection("ConnectionStrings"));
services.AddScoped<IQueryHelper>(c => new QueryHelper(cn));

如果我只有两层,而QueryHelper在服务层中,则此方法很好。

但是我想访问DataAccess层中的一个或多个连接字符串。

1 个答案:

答案 0 :(得分:0)

编辑:注入配置可能不是最明智的主意,因为您可以阅读here。更好的方法是为DAL也可以访问的每个连接字符串配置选项。

services.Configure<MyConnectionInfo>(options => Configuration.GetSection("MyConnectionInfo").Bind(options));

现在您的存储库中只需注入IOptions<MyConnection>并使用值。

旧答案:只需将配置注入数据层类即可。在必须向ioc容器注册配置之前。

services.AddSingleton(typeof(IConfiguration), Configuration);

现在通过注入IConfiguration实例来访问所需的连接字符串。您也可以配置更多选项,但是也可以注入配置。