首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.net核心(不是强类型的)中拥有和访问可变数量的连接字符串?

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

Stack Overflow用户
提问于 2016-11-09 15:40:09
回答 1查看 333关注 0票数 0

在ASP.NET 4.6中,web.config中有一个connectionStrings部分,您可以在其中添加无限数量的连接字符串,并将它们动态读取到应用程序中,或者按名称获取单个连接字符串。

我看到的ASP.NET核心示例使用appsettings.json文件存储设置,然后将这些设置绑定到具有与设置名称匹配的属性的强类型对象。具有设置值的绑定对象存储在容器中,以便在应用程序周围注入。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-10 01:49:42

appsettings.json在存储和访问ConnectionStrings方面具有与web.config相同的功能。

代码语言:javascript
复制
{
  "ConnectionStrings": {
    "SqlServerConnection" : "Server=.\\sql2012express;Database=aspnet-IdentityServer4WithAspNetIdentity;Trusted_Connection=True;MultipleActiveResultSets=true",
    "SqLiteConnection": "Data\\LynxJournal.db"
  },
}

可以通过以下代码访问这些

代码语言:javascript
复制
_config.GetConnectionString("SqliteConnection")

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

_config是从设置配置的Startup.cs注入IConfiguration服务的结果。

代码语言:javascript
复制
    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;
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40510762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档