Полное руководство по использованию миграции с несколькими базами данных SQL Azure, строками соединений и профилями публикации служб приложений Azure. - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть проект MVC, размещенный в службах приложений Azure с базами данных SQL Azure для данных.У меня есть среда разработки, подготовки / принятия и производства (Служба приложений), а что касается баз данных, у меня есть разработка, подготовка / принятие, производство и локальная БД (mdf).У меня есть 3 профиля публикации (по 1 для каждой среды).

Я (думаю) понимаю, что могу использовать CTOR класса DbContext для установки строки подключения из 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>());

Конфигурация.cs: ​​

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

    // seeding method ...
}    

Но я всегда получаю сообщения об ошибках типа «уже существует таблица с именем XXX ...», даже когда я успешно выполнил команду Update-Database в консоли, она все ещене получается.

Я совершенно заблудился в этом и, похоже, не могу найти лучший способ справиться со своим сценарием.Я хочу иметь возможность использовать несколько профилей публикации (позже мы будем использовать слоты для разработки, но не сейчас), и там также возможна конфигурация.Я могу видеть все мои соединения из моего web.config вместе с флажком обновления базы данных, но я не могу найти правильный способ настроить все вместе ...

Может ли кто-нибудь помочь мне, предложить мне или предоставить какие-либопомощь любого рода?С уважением!

1 Ответ

0 голосов
/ 26 ноября 2018

ASP.NET 5 представляет улучшенную поддержку управления поведением приложений в нескольких средах , таких как development, staging и production.Переменные среды используются для указания среды, в которой выполняется приложение, позволяя соответствующим образом настроить приложение.

Вы можете установить ASPNET_ENV в текущей среде, которую хотите использовать.Если вам нужно проверить, запущено ли приложение в определенной среде, используйте env.IsEnvironment("environmentname")

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

Для получения более подробной информации вы можете обратиться к этой статье и этой one который является ядром asp.net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...