Когда я хочу опубликовать в службе приложений Azure, будут ли эти команды выполняться автоматически?
EF не поддерживает автоматические миграции, вам может потребоваться вручную выполнить Add-Migration или dotnet ef add для добавления файлов миграции.Вы можете явно выполнить команду для применения миграций, также вы можете применить миграции в вашем коде .
И вы можете добавить следующий код в метод Configure файла Startup.cs:
using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}
Я пытаюсь создать три профиля с разными строками подключения
Вы бы динамически выбирали строку подключения на основе среды, поэтому вот основные шаги, на которые вы можете сослаться.
- Установите значение ASPNETCORE_ENVIRONMENT в azure в webapp> property> debug.
![enter image description here](https://i.stack.imgur.com/0KXDl.png)
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();
}
Для более подробной информации, вы можете обратиться к этой теме .