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.
My walkthrough:
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;"
},
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; }
}
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"));
}
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;
...
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With