使用IConfigurationRoot将应用程序的连接字符串向下传递到ASP.NET 5中的存储库类库

布莱克·里维尔(Blake Rivell)

我有一个ASP.NET 5 MVC Web应用程序,在Startup.cs中,我看到了公共属性

IConfigurationRoot Configuration 

被设置为 builder.Build();

在整个MVC Web应用程序中,我可以轻松完成

Startup.Configuration["Data:DefaultConnection:ConnectionString"]

appsettings.json文件中获取conn字符串

如何appsettings.json使用构造函数注入获取在ASP.NET 5 MVC中指定的连接字符串,该连接字符串向下传递到我的存储库类库中?

更新:
这是所有其他存储库都继承自的基本存储库(如您所见,现在我在这里有一个硬编码的连接字符串):

public class BaseRepo
{
    public static string ConnectionString = "Server=MYSERVER;Database=MYDATABASE;Trusted_Connection=True;";

    public static SqlConnection GetOpenConnection()
    {
        var cs = ConnectionString;
        var connection = new SqlConnection(cs);
        connection.Open();
        return connection;
    }
}

在我的appsettings.json文件中的asp.net 5 Web应用程序中,我具有以下等同于向.net 4.5 Webapp中的web.config添加连接字符串的情况:

  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=MYSERVER;Database=MYDATABASE;Trusted_Connection=True;"
    }
  }

另外,在我的asp.net 5 Web应用程序中,我的Startup.cs中包含以下默认代码,该代码将站点配置加载到IConfigurationRoot类型的公共属性中:

 public IConfigurationRoot Configuration { get; set; }
// Class Constructor
        public Startup(IHostingEnvironment env)
        {
            // Set up configuration sources.
            var builder = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

            if (env.IsDevelopment())
            {
                // For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
                builder.AddUserSecrets();
            }

            builder.AddEnvironmentVariables();
            Configuration = builder.Build();
        }

现在,在我的asp.net Web应用程序中,如果我想访问任何appsettings,我可以简单地执行以下操作: Startup.Configuration["Data:DefaultConnection:ConnectionString"]

但不幸的是,我无法从我的班级库中做到这一点。

如果有人想找出答案,请按照以下步骤进行重现:

  1. 创建一个新的ASP.NET 5 MVC Web应用程序。
  2. 将类型库(包)的另一个项目添加到该项目。
  3. 找出将设置从ASP.NET 5 MVC应用传递到类库的方法

更新后,我还是不太明白。这是我的代码:

public class BaseRepo
{
    private readonly IConfigurationRoot config;

    public BaseRepo(IConfigurationRoot config)
    {
        this.config = config;
    }
}

此类声明不起作用,因为BaseRepo现在需要构造函数参数。

public class CustomerRepo : BaseRepository, ICustomerRepo
{
    public Customer Find(int id)
    {
        using (var connection = GetOpenConnection())
        {
            ...
        }
    }
}
Pasgiannis手

在您的Startup.cs文件上,添加以下方法

public void ConfigureServices(IServiceCollection services) {
    services.AddSingleton(_ => Configuration);
}

然后像这样更新您的BaseRepo类

public class BaseRepo {
    private readonly IConfiguration config;

    public BaseRepo(IConfiguration config) {
        this.config = config;
    }

    public SqlConnection GetOpenConnection() {
        string cs = config["Data:DefaultConnection:ConnectionString"];
        SqlConnection connection = new SqlConnection(cs);
        connection.Open();
        return connection;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在asp.net mvc 5中实现存储库

来自分类Dev

ASP.Net 5类库包中的EntityFramework命令?

来自分类Dev

引用UWP和ASP.NET 5中的类库

来自分类Dev

Asp.Net 5类库中未引用Mscorlib

来自分类Dev

ASP.Net 5登录类库

来自分类Dev

在 asp.net mvc 应用程序中传递 null 而不是字符串的动作

来自分类Dev

.NET webforms 数据库连接中的存储库

来自分类Dev

如何在无需手动更改数据库连接字符串的情况下将ASP.NET应用程序部署到生产计算机

来自分类Dev

如何从ASP.NET控制器类中的通用存储库读取数据?

来自分类Dev

如何使ASP.Net 5应用程序能够使用类库?

来自分类Dev

如何调试引用Visual Studio 2019中的.NET Framework 4.8类库的.NET 5 WinForms应用程序

来自分类Dev

ASP.NET 5控制台应用程序(程序包)-如何从连接字符串创建DBContext?

来自分类Dev

ASP.NET MVC 5在Oracle数据库中存储身份用户

来自分类Dev

在我的asp.net MVC Web应用程序中获取通用存储库+子存储库+ UnitOfWork

来自分类Dev

在ASP.NET 5 / EF 6中获取数据库连接字符串

来自分类Dev

Azure 应用服务上的 ASP.NET Core 未从应用程序设置中读取连接字符串

来自分类Dev

如何使XML文件成为vNext(ASP.NET 5)类库中的嵌入式资源?

来自分类Dev

在ASP.NET 5类库中找不到System.Math命名空间

来自分类Dev

直接在ASP.NET 5(vNext)的类库中访问强类型的配置设置?

来自分类Dev

引用ASP.NET 5中的类库-依赖关系问题

来自分类Dev

scafford自动生成Crud存储库asp.net5

来自分类Dev

在 Asp.Net 核心应用程序中,无法从 json 文件中读取连接字符串?

来自分类Dev

在我的ASP.NET MVC应用程序中哪里存储字符串常量?

来自分类Dev

将连接字符串从另一个库传递到.Net Core EF库

来自分类Dev

从Framework 4.5类库项目添加对ASP.NET 5类库的引用

来自分类Dev

从Framework 4.5类库项目添加对ASP.NET 5类库的引用

来自分类Dev

使用EF6将文档存储在数据库ASP.NET MVC5中-代码优先

来自分类Dev

连接到本地SQL Server数据库的VB.NET WinForms应用程序的正确连接字符串

来自分类Dev

ASP.NET在应用程序数据库中存储会话状态

Related 相关文章

  1. 1

    在asp.net mvc 5中实现存储库

  2. 2

    ASP.Net 5类库包中的EntityFramework命令?

  3. 3

    引用UWP和ASP.NET 5中的类库

  4. 4

    Asp.Net 5类库中未引用Mscorlib

  5. 5

    ASP.Net 5登录类库

  6. 6

    在 asp.net mvc 应用程序中传递 null 而不是字符串的动作

  7. 7

    .NET webforms 数据库连接中的存储库

  8. 8

    如何在无需手动更改数据库连接字符串的情况下将ASP.NET应用程序部署到生产计算机

  9. 9

    如何从ASP.NET控制器类中的通用存储库读取数据?

  10. 10

    如何使ASP.Net 5应用程序能够使用类库?

  11. 11

    如何调试引用Visual Studio 2019中的.NET Framework 4.8类库的.NET 5 WinForms应用程序

  12. 12

    ASP.NET 5控制台应用程序(程序包)-如何从连接字符串创建DBContext?

  13. 13

    ASP.NET MVC 5在Oracle数据库中存储身份用户

  14. 14

    在我的asp.net MVC Web应用程序中获取通用存储库+子存储库+ UnitOfWork

  15. 15

    在ASP.NET 5 / EF 6中获取数据库连接字符串

  16. 16

    Azure 应用服务上的 ASP.NET Core 未从应用程序设置中读取连接字符串

  17. 17

    如何使XML文件成为vNext(ASP.NET 5)类库中的嵌入式资源?

  18. 18

    在ASP.NET 5类库中找不到System.Math命名空间

  19. 19

    直接在ASP.NET 5(vNext)的类库中访问强类型的配置设置?

  20. 20

    引用ASP.NET 5中的类库-依赖关系问题

  21. 21

    scafford自动生成Crud存储库asp.net5

  22. 22

    在 Asp.Net 核心应用程序中,无法从 json 文件中读取连接字符串?

  23. 23

    在我的ASP.NET MVC应用程序中哪里存储字符串常量?

  24. 24

    将连接字符串从另一个库传递到.Net Core EF库

  25. 25

    从Framework 4.5类库项目添加对ASP.NET 5类库的引用

  26. 26

    从Framework 4.5类库项目添加对ASP.NET 5类库的引用

  27. 27

    使用EF6将文档存储在数据库ASP.NET MVC5中-代码优先

  28. 28

    连接到本地SQL Server数据库的VB.NET WinForms应用程序的正确连接字符串

  29. 29

    ASP.NET在应用程序数据库中存储会话状态

热门标签

归档