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

C# 数据层中的访问连接字符串,c#,asp.net-web-api,asp.net-core,C#,Asp.net Web Api,Asp.net Core,我目前正在.NETCore中开发一个web API。我的解决方案中有三个项目,参考资料如下: Web->Services->DataAccess 因此,web层没有对DataAccess层的直接引用 我的问题是:在这种三层体系结构中,获得连接字符串的正确方法是什么?我已经到处阅读了,但找不到任何好的解决方案,可以在第三层访问我的connectionstring,因为web层没有对第三层的引用 我采用了这种方法: services.Configure<ConnectionConfig>

我目前正在.NETCore中开发一个web API。我的解决方案中有三个项目,参考资料如下:

Web->Services->DataAccess

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

我的问题是:在这种三层体系结构中,获得连接字符串的正确方法是什么?我已经到处阅读了,但找不到任何好的解决方案,可以在第三层访问我的connectionstring,因为web层没有对第三层的引用

我采用了这种方法:

services.Configure<ConnectionConfig>(Configuration.GetSection("ConnectionStrings"));
services.AddScoped<IQueryHelper>(c => new QueryHelper(cn));
services.Configure(Configuration.GetSection(“connectionString”);
addScope(c=>newQueryHelper(cn));
如果我只有两个层,查询帮助器位于服务层,那么这就可以很好地工作


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

编辑:注入配置可能不是您所能理解的最明智的想法。更好的方法是为DAL也可以访问的每个连接字符串配置选项

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

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

根据这个答案:您不应该这样做。最好不要弄乱Steven说的话:p他应该最清楚。相应地更新了我的答案。那么如何访问第三层存储库中的connectionstring呢PConfigure一个选项类,可以注入到第三层中。如果要在多个程序集中访问选项类,则该选项类必须位于独立程序集中。提供了一个例子。所以我添加了一个新的项目(assemblie),在那里我放置了我的选项类。之后,我必须从我的第三层添加一个对这个assemblie的引用?Bryan,我想知道我是否可以请你在写问题时更加小心一点?我们热衷于使问题简洁易懂,为此,拼写很重要。“我是”的缩写是“我是”,它总是有一个撇号(63篇文章需要修复)。没有必要添加“请帮助我”和其他形式的恳求(39个帖子需要修复)。我们这里没有足够的编辑志愿者,所以你将来会记住这一点吗?非常感谢。
services.AddSingleton(typeof(IConfiguration), Configuration);