.Net CORE Dapper Connection String?

妖精的绣舞 提交于 2019-12-01 05:40:51

问题


I am setting up my first .NET Core application. I am going to user Dapper (1.50.0-rc2) for the ORM.

I have added the following to my appsettings.json file.

"Data": {
    "DefaultConnection": {
        "ConnectionString": "user id=exampleusername;password=examplepassword;Data Source=db.example.com;Database=exampledb;"
    }
},

I am confused at how to get the value of ConnectionString. As .NET Core is so new, online examples are all over the place and none seem to actually cover this.


回答1:


I have a sample Console App for .NET core on my GitHub repository

Setup phase

var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

Build phase

Configuration = builder.Build();

Use phase

Configuration.GetConnectionString("DefaultConnection")

You can use this value for Dapper

P.S.

You need to add 3 dependencies into your project.json

"Microsoft.Extensions.Configuration": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc2-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final"

UPDATED

Specific solution

make Configuration static property and add private setter

public static IConfigurationRoot Configuration { get; private set; }

and change your extension

namespace GamesCore.Extensions 
{
    public class ScoreExtensions 
    { 
        private static string dataConnectionString = Startup.Configuration.GetConnectionString("DefaultConnection"); 
    } 
}

For .NET Core 2.0 everything is same and only project file is changed so you need to use following packages:

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.2" />
  </ItemGroup>



回答2:


My walkthrough:

  1. Add ConnectionStrings section in appsettings.json:

    "ConnectionStrings": {
       "cs1": "Server=xxxx;Port=xxxx;Database=xxxx; User Id=xxxx;Password=xxxx;Pooling=false;",
       "cs2": "Server=xxxx;Port=xxxx;Database=xxxx; User Id=xxxx;Password=xxxx;Pooling=false;",
       "cs3": "Server=xxxx;Port=xxxx;Database=xxxx; User Id=xxxx;Password=xxxx;Pooling=false;"
    },
    
  2. Create class that represents the connection strings section:

    public class ConnectionStringList
    {
        public string cs1 { get; set; }
        public string cs2 { get; set; }
        public string cs3 { get; set; }
    }
    
  3. Open Startup.cs and add the above configuration class to the services collection in ConfigureServices:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddOptions();
        services.Configure<ConnectionStringList>(Configuration.GetSection("ConnectionStrings"));
    }
    
  4. Inject IOptions<ConnectionStringList> into your controller/service etc. and retreive your connection string value from Value property:

    public SampleController(IOptions<ConnectionStringList> connectionStrings)
    {
        string cs1 = connectionStrings.Value.cs1;
        ...
    


来源:https://stackoverflow.com/questions/37597300/net-core-dapper-connection-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!