簡體   English   中英

有關如何在多個Azure SQL數據庫,連接字符串和Azure App Services發布配置文件中使用遷移的完整指南

[英]Complete guide on how to use Migrations with several Azure SQL databases, connectionstrings and Azure App Services publish profiles

我在Azure應用服務中托管了一個MVC項目,其中包含用於數據的Azure SQL數據庫。 我有一個開發,暫存/接受和生產環境(應用程序服務),對於數據庫,我也有一個開發,暫存/接受,生產和本地數據庫(mdf)。 我有3個發布配置文件(每個環境1個)。

我(認為)理解我可以使用DbContext類的CTOR基於名稱從web.config設置連接字符串:

防爆。

public ApplicationDbContext(): base("DbContextNameThatResidesInWebConfig") 
{           
     // ...               
}   

如果我不使用遷移程序,那么我可以做我想做的事而不會出現任何問題。 使用遷移時(由於更改模型時我不希望丟失任何數據),在創建模型時遇到了一些問題,我在上面的CTOR中嘗試了幾種方法:

// this is a custom Seeder that inherits DropDatabaseAlways/WhenModelChanges
System.Data.Entity.Database.SetInitializer(new ContractCareSeeder()); 

// from what i understand, this tells to use the latest migrations applied
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Migrations.Configuration>());

Configuration.cs:

internal sealed class Configuration : DbMigrationsConfiguration<ApplicationDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }

    // seeding method ...
}    

但是,即使我在控制台中成功執行了Update-Database命令,我仍然會收到諸如“已經有一個名為XXX ...的表”之類的錯誤,但它仍然會失敗。

我對此頗為迷惑,似乎找不到解決我的情況的最佳方法。 我希望能夠使用多個發布配置文件(稍后我們將使用開發插槽,但現在不使用),並且還可以進行配置。 我可以看到來自我的web.config的所有連接以及“更新數據庫”復選框,但是我似乎找不到正確的方式來配置所有內容……

誰能幫助我,建議我或提供任何幫助? 親切的問候!

ASP.NET 5引入了改進的支持,可以跨多個環境控制應用程序行為,例如developmentstagingproduction 環境變量用於指示應用程序在哪個環境中運行,從而可以正確配置應用程序。

您可以將ASPNET_ENV設置為ASPNET_ENV使用的當前環境。 如果需要檢查應用程序是否在特定環境中運行,請使用env.IsEnvironment("environmentname")

if (env.IsDevelopment())
{
    app.UseBrowserLink();
    app.UseDeveloperExceptionPage();
    app.UseDatabaseErrorPage();
}
else
{
    app.UseExceptionHandler("/Home/Error");
}

有關詳細信息,你可以參考這個文章和這一個這雖然是asp.net的核心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM