c# - 发布不推送数据库初始化
问题描述
我们设法通过Webdatabase
publish
Deploy从. 由于我们有一个新的数据库结构和 Web 内容,所以我们决定删除生产环境中的所有表并从头开始重新发布。Azure
VS 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);
}
...
}
解决方案
发现了问题,它与 DbInitializer 的当前代码 (dev) 有关,因为我们覆盖了 SaveChangesAsync 内容。
推荐阅读
- scala - 如何在 spark scala 中覆盖特定的表分区
- c++ - C++ 将日、月、年转换为毫秒
- sqlite - 在db中查找重复的列多个值
- javascript - PHP Mailer 返回 PHP 致命错误:未捕获 PHPMailer\PHPMailer\Exception:SMTP 错误:无法验证
- regex - 如何为我的列表使用正则表达式
在颤振/飞镖? - reactjs - 无法使用 axios 网络错误 reaxt 原生于 heroku 发布
- java - 如何反序列化杰克逊中嵌套的包装字符串?
- javascript - 如何在 Excel 电子表格中添加文件?
- python - 在这个程序中,window = Tk() 的功能是什么,因为忽略它会给出相同的输出
- node.js - NodeJS / Multer:如何用新文件替换目录中的现有文件