c# - 访问数据层中的连接字符串
问题描述
我目前正在.NET 核心中开发一个 Web API。我的解决方案中有三个项目,其中包含以下参考:
Web -> 服务 -> 数据访问
所以 web 层没有直接引用 DataAccess 层。
我的问题是:在这种三层架构中获取连接字符串的正确方法是什么?我已经阅读过,但找不到任何好的解决方案,我可以在第三层访问我的连接字符串,只是因为 web 层没有对第三层的引用。
我遇到了这种方法:
services.Configure<ConnectionConfig>(Configuration.GetSection("ConnectionStrings"));
services.AddScoped<IQueryHelper>(c => new QueryHelper(cn));
如果我只有两层,即 QueryHelper 在服务层中,这将很有效。
但我想在我的数据访问层访问一个或多个连接字符串。
解决方案
编辑:注入配置可能不是您可以在此处阅读的最聪明的想法。更好的方法是为 DAL 也可以访问的每个连接字符串配置选项。
services.Configure<MyConnectionInfo>(options => Configuration.GetSection("MyConnectionInfo").Bind(options));
现在在您的存储库中注入IOptions<MyConnection>
并使用这些值。
旧答案:只需将您的配置注入您的数据层类。在您必须向 ioc-container 注册配置之前。
services.AddSingleton(typeof(IConfiguration), Configuration);
现在通过注入IConfiguration
. 您也可以配置更多选项,但注入配置也很好。
推荐阅读
- python - python 语法的建议 - 将实施什么?
- verilog - Verilog 编译错误:未识别的变量 2'b00
- typescript - TypeScript:如何将类型属性转换为类成员
- javascript - 如何停止 HTML 文本框中的特殊字符?
- javascript - 如何找到 9 周前的星期天,而不管今天是一周中的哪一天使用 JavaScript
- r - API 推特和推特
- maven - 如何将活动选择参数的选定值传递给构建脚本
- python - Python中索引的其他形式
- hyperledger-fabric - 在 IBM 区块链 Hyperledger Fabric 网络 IBM 上实例化我的市场合同时出现 REQUEST_TIMEOUT。VS CODE 用于 Hyperledger Fabric 网络
- python - 有没有办法根据同一行的另一列中的单元格来格式化一列中的单元格?(openpyxl)