![](/img/trans.png)
[英]How to create EF migrations with ConnectionStrings on Azure's ConfigurationManager.ConnectionStrings?
[英]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引入了改進的支持,可以跨多個環境控制應用程序行為,例如development
, staging
和production
。 環境變量用於指示應用程序在哪個環境中運行,從而可以正確配置應用程序。
您可以將ASPNET_ENV
設置為ASPNET_ENV
使用的當前環境。 如果需要檢查應用程序是否在特定環境中運行,請使用env.IsEnvironment("environmentname")
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.