首页 > 解决方案 > 发布不推送数据库初始化

问题描述

我们设法通过Webdatabase publish Deploy从. 由于我们有一个新的数据库结构和 Web 内容,所以我们决定删除生产环境中的所有表并从头开始重新发布。AzureVS 2017

发布运行正常但没有数据库数据初始化(我们在 DbInitializer.cs 中定义的示例数据).. 只有数据库结构。在 Publish Settings 中,我们可以看到 Database DefaultConnection 和 EF Migrations ApplicationDBContext 都被勾选了。

有任何想法吗?

环境:

- .Net Core 2.1 
 - SQL Server 
 - Azure App Service

程序.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);
        }

 ...

}

标签: c#asp.net-core.net-core

解决方案


发现了问题,它与 DbInitializer 的当前代码 (dev) 有关,因为我们覆盖了 SaveChangesAsync 内容。


推荐阅读