微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net-mvc – 在没有EF的情况下在appsettings.json中获取多个连接字符串

通过迁移我开发的当前MVC .Net应用程序,开始玩.Net Core RC2.它看起来像我,因为使用appsettings.json处理配置的方式,如果我有多个连接字符串,我要么必须使用EF来检索连接字符串,要么我必须为每个连接字符串创建单独的类.我看到的所有示例都使用EF(这对我来说没有意义,因为我将使用Dapper)或者该示例构建了一个以config中的部分命名的类.我错过了更好的解决方案吗?
"Data": {
        "Server1": {
          "ConnectionString": "data source={server1};initial catalog=master;integrated security=True;"
        },"Server2": {
          "ConnectionString": "data source={server2};initial catalog=master;integrated security=True;"
        }
    }

为什么我要构建两个类,一个名为“Server1”,另一个名为“Server2”,如果唯一的属性是连接字符串?

解决方法

我对Adem对RC2工作的回应做了一些修正,所以我想我最好发布它们.

我配置了appsettings.json并创建了一个类似Adem的类

{
    "ConnectionStrings": {
      "DefaultConnectionString": "Default","CustomConnectionString": "Custom"
    }
}

public class ConnectionStrings
{
    public string DefaultConnectionString { get; set; }

    public string CustomConnectionString { get; set; }
}

大多数Adem的代码都是在VS for RC2中开箱即用的,所以我只是将下面的行添加到了ConfigureServices方法

services.Configure<Models.ConnectionStrings>(Configuration.GetSection("ConnectionStrings"));

主要的缺点是必须将连接字符串传递给控制器​​(一旦您指定了强类型配置对象并将其添加到服务集合,您可以通过请求实例从任何Controller或Action方法请求它IOptions,https://docs.asp.net/en/latest/mvc/controllers/dependency-injection.html)

所以这是控制器,

private readonly ConnectionStrings _connectionStrings;
        public HomeController(IOptions<ConnectionStrings> connectionStrings)
        {
            _connectionStrings = connectionStrings.Value;
        }

然后在实例化DAL时传递相应的connectionString

DAL.DataMethods dm = new DAL.DataMethods(_connectionStrings.CustomConnectionString);

所有的例子都说明了这一点,他们只是没有说明,为什么我试图直接从DAL拉出来不起作用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐