Base solution for your next web application
Open Closed

Update database with migrations using development environment settings (appsettings.Development.json) #6704


User avatar
0
piapps created

Hi guys,

I have added an appsettings.Development.json file to my Web.Host project for use on my local machine which works fine.

However the EntityFrameworkCore project must not use the file because whenever I do Update-Database it fails (unable to find sql instance) unless I put the correct conn string back into appsettings.json.

How or where can I adjust the connection string resolver so that .Development will be respected by migrations?

Im using v6.8.0

Regards, Pete

Markdown is supported
Copy & paste or drag & drop images (max 30 MB per image)

13 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team

    You can try this solution: https://entityframework.net/knowledge-base/48913968/net-core-2---entity-framework--update-database-of-different-environment

    Related discussion: https://github.com/aspnet/EntityFrameworkCore/issues/7353

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    piapps created

    Neither using set or $env = seemed to work, any other ideas?

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    ismcagdas created
    Support Team
    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    piapps created

    Hi again,

    Sorry I should have been clearer in my response yesterday.

    I have tried both the following and they dont work

    set ASPNETCORE_ENVIRONMENT=Development

    and

    $env:ASPNETCORE_ENVIRONMENT='Development'

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    maliming created
    Support Team

    @piapps

    You can try modifying the DbContextFactory as follows:

    Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")

    public class AbpZeroTemplateDbContextFactory : IDesignTimeDbContextFactory<AbpZeroTemplateDbContext>
    {
    	public AbpZeroTemplateDbContext CreateDbContext(string[] args)
    	{
    		var builder = new DbContextOptionsBuilder<AbpZeroTemplateDbContext>();
    		var configuration = AppConfigurations.Get(WebContentDirectoryFinder.CalculateContentRootFolder(), Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"), addUserSecrets: true);
    
    		AbpZeroTemplateDbContextConfigurer.Configure(builder, configuration.GetConnectionString(AbpZeroTemplateConsts.ConnectionStringName));
    
    		return new AbpZeroTemplateDbContext(builder.Options);
    	}
    }
    
    PM> $Env:ASPNETCORE_ENVIRONMENT = "Staging"
    PM> $Env:ASPNETCORE_ENVIRONMENT
    Staging
    PM> Update-Database
    Applying migration '20170406083347_Initial_Migration'.
    Applying migration '20170623075109_AspNetZero_V4_1_Changes'.
    Applying migration '20170704084731_Added_GoogleAuthenticatorKey_Column'.
    Applying migration '20170714081027_Added_Relation_Between_Edition_And_SubscriptionPayment'.
    Applying migration '20170724142223_Upgraded_To_Abp_V2_2'.
    Applying migration '20170913133916_Added_SharedMessageId_To_ChatMessage'.
    Applying migration '20170914070123_Added_ReceiverReadState_To_ChatMessage'.
    Applying migration '20170914084815_Invoice_Changes'.
    Applying migration '20170914121022_TypeChange_SharedMessageId_String_Guid'.
    Applying migration '20180118065703_Added_Entity_History'.
    Applying migration '20180320065710_Upgraded_To_Abp_V3_5'.
    Applying migration '20180718081610_Abp_v3_7_Changes'.
    Applying migration '20180726063233_Upgraded_ABP_v3.8.0'.
    Applying migration '20180731052649_Upgrade_ABP_v3.8.1'.
    Applying migration '20180807062930_Upgrade_ABP_v3.8.2'.
    Applying migration '20181012141151_Upgraded_To_Abp_v3_9_0'.
    Applying migration '20190103081952_Recurring_Payment_Changes'.
    Applying migration '20190208083524_Upgraded_To_Abp_v4_2_0'.
    Applying migration '20190304131651_Added_User_OrganizationUnits'.
    Done.
    PM> 
    
    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    piapps created

    That worked thanks, better yet after setting that change to the factory I have gone into properties of the EFCore project and set the environment variable in there so it remembers between Visual studio sessions (same as the host project)

    Thanks again

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    murat.yuceer created

    Thanks maliming why this code not added default template

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    maliming created
    Support Team

    I will consider adding this code to the template. : )

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    ismcagdas created
    Support Team

    This issue is closed because of no recent activity. Please open a new issue if you are still having this problem.

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    conzepta created

    Hello

    @maliming, have you considered adding this code to the template? I mean, it was 2 years since this bug was reported and 1 year since you said, that you will consider it.

    Today I ran in the exact same issue and it cost me quite some time to finally find this thread. As one might imagine, it is quite annoying to spend time investigating a 2 year old bug, that already has a solution but the developers were just considering fixing it, instead of actually fixing it...

    So could someone please finally add this fix to the template?

    Thanks a lot

    Kind regards

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    maliming created
    Support Team

    hi @conzepta

    I will add some comment to IDesignTimeDbContextFactory

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    maliming created
    Support Team

    https://github.com/aspnetzero/aspnet-zero-core/pull/3764

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)
  • User Avatar
    0
    conzepta created

    Thank you very much =)

    Markdown is supported
    Copy & paste or drag & drop images (max 30 MB per image)