This is how I am currently adding my DbContext in my ConfigureServices method in Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
.....
services.AddDbContext<MyDbContext>(options =>
options.UseMySQL(Configuration.GetConnectionString("DefaultConnection")));
.....
}
And my connection string is stored in my appsettings.json file, like this for example:
{
....
"ConnectionStrings": {
"DefaultConnection": "server=localhost;user id=root;password=root;database=mydb;sslmode=none"
}
....
}
If I want to switch which database is being connected, how do I make the "services.AddDbContext()" switch the database if it is "Development" vs. "Production" environments?
You can configure different environment connection strings in different appsettings
files like this-
For test environment, use appsettings.test.json
"Data": {
"MyDbContext": {
"ConnectionString": "" /*<<== TestDatabase connection string */
},
For prod environment, use appsettings.prod.json
"Data": {
"MyContext": {
"ConnectionString": "" /*<<== ProdDatabase connection string */
},
Use ASPNETCORE_ENVIRONMENT
environment variable to set current environment as Test or Prod values.
In Startup, you can use like this-
services.AddDbContext<MyContext>(options =>
options.UseSqlServer(Configuration["Data:MyContext:ConnectionString"]));
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