Get Connectionstring from Appsettings.JSON Instead of Being Hardcoded in .Net Core 2.0 App

Get ConnectionString from appsettings.json instead of being hardcoded in .NET Core 2.0 App

STEP 1: Include the following in OnConfiguring()

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
.AddJsonFile("appsettings.json")
.Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
}

STEP 2: Create appsettings.json:

  {
"ConnectionStrings": {
"DefaultConnection": "Server=YOURSERVERNAME; Database=YOURDATABASENAME; Trusted_Connection=True; MultipleActiveResultSets=true"
}
}

STEP 3: Hard copy appsettings.json to the correct directory

  Hard copy appsettings.json.config to the directory specified in the AppDomain.CurrentDomain.BaseDirectory directory. 
Use your debugger to find out which directory that is.

Assumption: you have already included package Microsoft.Extensions.Configuration.Json (get it from Nuget) in your project.

How to read connection string from appsettings.json in a DBContext file in Asp.Net Core?

You can setup your db context in the startup file and not override OnConfiguring at all.
Just add a constructor that takes DbContextOptions<TContext> to your DbContext class. This constructor should pass on the parameter to the base class' constructor,
then call AddDbContext<TContext> in your Startup.Configure as follows:

// your TestContext showing constructor
public class TestContext : DbContext
{
public TestContext(DbContextOptions<TestContext> options) : base(options){ }
}

// Then in Startup.cs
public class Startup
{
public IConfiguration Configuration {get;}

public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TeamsDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("connection_string")));
}
}

Worth noting is that the AddDbContext<TContext> method has overloads that allow setting the service lifetime for the context to Singleton or Transient if you so wish. The default is Scoped.

ASP.NET Core app does not use setting from the appsettings.json, after trying to publish to Azure

By running locally I am taking it that you mean in debug mode from Visual Studio. Doing the following two things should fix the issue:

  1. Search the solution for "aspnet-53bc9b9d-9d6a-45d4-1122-2a2761773502" and correct anywhere that is set (settings files or otherwise).

  2. Delete the debug and obj folders in the project directory. Clean and rebuild the solution.

The other possibility is that there is an environment variable set on your machine for the connection string, but it seems unlikely that this would be there without you already being aware.

Get ConnectionString from appsettings.json

Extend the configuration method as below:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var connectionString = configuration.GetConnectionString("StudentDatabase");
optionsBuilder.UseSqlServer(connectionString);
}
}

How to set connectionstring from appsettings.json in Entity Framework Core

The ConnectionString is allways null because there is a typo, try this

ConnectionString = Configuration["Connnectionstrings:MyConnection"];

or fix name in appsettings.json



Related Topics



Leave a reply



Submit