首页 > 解决方案 > 访问数据层中的连接字符串

问题描述

我目前正在.NET 核心中开发一个 Web API。我的解决方案中有三个项目,其中包含以下参考:

Web -> 服务 -> 数据访问

所以 web 层没有直接引用 DataAccess 层。

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

我遇到了这种方法:

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

如果我只有两层,即 QueryHelper 在服务层中,这将很有效。

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

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

解决方案


编辑:注入配置可能不是您可以在此处阅读的最聪明的想法。更好的方法是为 DAL 也可以访问的每个连接字符串配置选项。

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

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

旧答案:只需将您的配置注入您的数据层类。在您必须向 ioc-container 注册配置之前。

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

现在通过注入IConfiguration. 您也可以配置更多选项,但注入配置也很好。


推荐阅读