Как использовать первые миграции кода со службой приложений Azure - PullRequest
0 голосов
/ 23 мая 2018

Когда я запускаю локально, я запускаю нижеприведенные команды вручную, а затем упаковываю и публикую приложение на моем сервере IIS.

Add-Migration Initial
Update-Database

Когда я хочу опубликовать в службе приложений Azure, будут ли эти команды выполняться автоматически?Если да, то как он узнает об использовании другой ConnectionString при публикации в Azure?

Я добавил connectionString для Azure в appsettings.json, но я не понимаю, как я могу сказать своим контроллерам и т. Д. Использовать этокогда я публикую в Azure AppServices

"ConnectionStrings": {
    "AzureTestConnection": "Data Source=tcp:xxxxxx-test.database.windows.net,1433;Initial Catalog=xxxxx;User Id=xxx@yyyy.database.windows.net;Password=xxxxxx",
    "NWMposBackendContext": "Server=(localdb)\\mssqllocaldb;Database=NWMposBackendContext-573f6261-6657-4916-b5dc-1ebd06f7401b;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

Я пытаюсь создать три профиля с разными строками подключения

  1. Локальный
  2. Опубликовано в AzureApp-Test
  3. Опубликовано в AzureApp-Prod

1 Ответ

0 голосов
/ 23 мая 2018

Когда я хочу опубликовать в службе приложений Azure, будут ли эти команды выполняться автоматически?

EF не поддерживает автоматические миграции, вам может потребоваться вручную выполнить Add-Migration или dotnet ef add для добавления файлов миграции.Вы можете явно выполнить команду для применения миграций, также вы можете применить миграции в вашем коде .

И вы можете добавить следующий код в метод Configure файла Startup.cs:

using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
    scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}

Я пытаюсь создать три профиля с разными строками подключения

Вы бы динамически выбирали строку подключения на основе среды, поэтому вот основные шаги, на которые вы можете сослаться.

  1. Установите значение ASPNETCORE_ENVIRONMENT в azure в webapp> property> debug.

enter image description here

2.Следуйте ASP.NET Core MVC с Entity Framework Core для начала работы.

3. Установите appsetting.json с двумя строками подключения.

{
  "ConnectionStrings": {
    "DefaultConnection": "connectiondefault",
    "azure": "connectionazure"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

Примечание : вы также можете установить здесь строку подключения в базе данных на портале, затем вы можете протестировать еев локальном и может использовать отладку для устранения неполадок.

Кроме того, вы можете попробовать проверить с одной строкой соединения , чтобы убедиться, что у вас нет проблем с подключением к базе данных.

4.Включить страницу исключений разработчика с помощью app.UseDeveloperExceptionPage(); иapp.UseExceptionHandler методы в вашем классе запуска, которые будут отображать ошибки.

        public Startup(IHostingEnvironment env)
        {
            Configuration = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .Build();

            HostingEnvironment = env;
        }

        public IConfigurationRoot Configuration { get; }
        public IHostingEnvironment HostingEnvironment { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            if (HostingEnvironment.IsDevelopment())
            {
                services.AddDbContext<SchoolContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
            }
            else
            {
                services.AddDbContext<SchoolContext>(options =>
                options.UseSqlServer(Configuration.GetConnectionString("azure")));
            }
            services.AddMvc();
        }

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

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