如何在.net核心(非强类型)中拥有和访问可变数量的连接字符串

本文关键字:访问 字符串 连接 拥有 net 核心 强类型 | 更新日期: 2023-09-27 18:17:12

NET 4.6中有一个connectionStrings部分。配置,您可以添加无限量的连接字符串,并动态地将它们读入应用程序,或按名称抓取单个连接字符串。

ASP。我所见过的使用appsettings的。NET Core示例。Json文件来存储设置,然后将这些设置绑定到具有与设置名称匹配的属性的强类型对象。带有设置值的绑定对象被存储在一个容器中,以便在应用程序周围注入。

我需要在应用设置中有一个connectionStrings列表。Json并允许用户在运行时(当他们登录时)选择数据库。我将存储用户连接到的数据库的名称作为声明。但是,我需要能够在整个应用程序中注入或以某种方式访问连接字符串列表,以便我可以获得用户连接到的DB的连接字符串。此外,我需要能够提供连接字符串到实体框架。

如何在.net核心(非强类型)中拥有和访问可变数量的连接字符串

appsettings。Json具有与web相同的功能。关于存储和访问connectionstring

{
  "ConnectionStrings": {
    "SqlServerConnection" : "Server=.''sql2012express;Database=aspnet-IdentityServer4WithAspNetIdentity;Trusted_Connection=True;MultipleActiveResultSets=true",
    "SqLiteConnection": "Data''LynxJournal.db"
  },
}

这些可以通过代码

访问
_config.GetConnectionString("SqliteConnection")

其中SqlliteConnection是连接字符串的名称

_config来自于从Startup.cs中注入的iconconfiguration服务,其中配置在

中设置。
    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
        builder.AddEnvironmentVariables();
        Configuration = builder.Build();
        Environment = env;
    }
    public IConfigurationRoot Configuration { get; }
    private IHostingEnvironment Environment { get; }
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMemoryCache();
        services.AddEntityFrameworkSqlite().AddDbContext<LynxJournalDbContext>();

        services.AddMvcCore()
            .AddAuthorization()
            .AddJsonFormatters();

        services.AddSingleton<IConfiguration>(Configuration);
        services.AddSingleton<IHostingEnvironment>(Environment);
        Services = services;
    }