- ABP Framework version: v4.4.0
- UI type: Angular
- DB provider: EF Core
- Tiered (MVC) or Identity Server Separated (Angular): yes
- Exception message and stack trace: None
- Steps to reproduce the issue:" Create an appsettings.Development.json, override connection string "Default" in it, set Environment variable DOTNET_ENVIRONMENT to Development
Hi
We are trying to make the DbMigrator project aware of different environments by using an appsettings.json per environment. This is usually straight forward by just creating appsettings.<Environment>.json file.
Unfortunately in the DbMigrator project this does not seem to work. While troubleshooting I have injected IConfiguration into the DbMigratorHostedService, and I did a Console.WriteLIne(_configuration.GetConnectionString("Default")); in the StartAsync method. Surprisingly, THIS WORKS and it gives the correct connection string! However, strangely it executes the DbMigration on the connection string from the original appsettings.json, instead of the one from IConfiguration..... I can't explain why. I can change the appsettings.json, and it connects to a different database, so it's definitely using that one.
Any ideas?
Thanks Michel
2 Answer(s)
-
0
DbMigrator also uses
IConfiguration
, see https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.DbMigrator/DbMigratorHostedService.cs#L15But ConnectionString is a special config! DbMigrator designed to be worked in distributed environments. So if your tenants have its own database then it gets the ConnectionString from database.
See https://github.com/abpframework/abp/blob/dev/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/Data/MyProjectNameDbMigrationService.cs#L66
Try to read another appsettings.json value
-
0
This question has been automatically marked as stale because it has not had recent activity.