我目前正在.NET Core中开发Web API。我的解决方案中有三个项目,带有以下参考文献:
Web->服务-> DataAccess
因此,Web层没有对DataAccess层的直接引用。
我的问题是:在具有三层结构的这种类型的体系结构中,获取连接字符串的正确方法是什么?我已经看过书,但是找不到任何好的解决方案可以在第三层访问我的连接字符串,只是因为Web层没有对第三层的引用。
我遇到了这种方法:
services.Configure<ConnectionConfig>(Configuration.GetSection("ConnectionStrings"));
services.AddScoped<IQueryHelper>(c => new QueryHelper(cn));
如果我只有两层,而QueryHelper在服务层中,则此方法很好。
但是我想访问DataAccess层中的一个或多个连接字符串。
答案 0 :(得分:0)
编辑:注入配置可能不是最明智的主意,因为您可以阅读here。更好的方法是为DAL也可以访问的每个连接字符串配置选项。
services.Configure<MyConnectionInfo>(options => Configuration.GetSection("MyConnectionInfo").Bind(options));
现在您的存储库中只需注入IOptions<MyConnection>
并使用值。
旧答案:只需将配置注入数据层类即可。在必须向ioc容器注册配置之前。
services.AddSingleton(typeof(IConfiguration), Configuration);
现在通过注入IConfiguration
实例来访问所需的连接字符串。您也可以配置更多选项,但是也可以注入配置。