Нам удалось выдвинуть Интернет и database
publish
ранее в Azure
(производственная среда - не работает) через Web Deploy из VS 2017
.Поскольку у нас есть новая структура базы данных и веб-контент, мы решили удалить все таблицы в производственной среде и снова выполнить публикацию с самого начала.
Публикация работает нормально, НО НЕТ инициализации данных базы данных (примеры данных, которые мы определили в DbInitializer.cs). ТОЛЬКО структура базы данных.В настройках публикации мы можем видеть, что для параметра DefaultConnection базы данных и приложения EF MigrationsDBContext установлены оба флажка.
Есть идеи?
Среда:
- .Net Core 2.1
- SQL Server
- Azure App Service
Program.cs:
public static void Main(string[] args)
{
var host = CreateWebHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<ApplicationDbContext>();
var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
var roleManager = services.GetRequiredService<RoleManager<ApplicationRole>>();
var dbInitializerLogger = services.GetRequiredService<ILogger<DbInitializer>>();
context.Database.EnsureCreated();
// DbInitializer.Initialize(context, );
DbInitializer.Initialize(context, userManager, roleManager, dbInitializerLogger).Wait();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred creating the DB.");
}
}
host.Run();
}
DBInitializer.cs:
public class DbInitializer
{
private static Host host;
public static async Task Initialize(ApplicationDbContext context, UserManager<ApplicationUser> userManager,
RoleManager<ApplicationRole> roleManager, ILogger<DbInitializer> logger)
{
//context.Database.EnsureCreated();
// Look for any users.
if (context.Users.Any())
{
return; // DB has been seeded
}
await CreateDefaultUserAndRoleForApplication(userManager, roleManager, logger);
await CreateDefaultUserTableData(context, userManager, logger);
}
...
}