Visual Studio发布时EF Migrations未执行问题求助
EF Core迁移在非Azure服务器FTP发布时未执行的排查方向
验证发布用连接字符串的权限
- 确认连接字符串对应的数据库账号拥有创建表、修改Schema的完整权限,尤其是能创建
__EFMigrationsHistory表并写入记录的权限。权限不足常导致脚本静默失败且无报错提示。 - 用该账号直接登录数据库客户端,手动执行已生成的迁移脚本,排查脚本本身或权限问题。
- 确认连接字符串对应的数据库账号拥有创建表、修改Schema的完整权限,尤其是能创建
检查迁移执行的网络与上下文
- Visual Studio FTP发布时,EF迁移是在本地执行
dotnet ef database update命令连接远程数据库,而非在服务器端运行。需确保本地机器能访问远程数据库的3306端口,无防火墙、安全组拦截。 - 在本地CMD手动执行
dotnet ef database update --connection "你的远程数据库连接字符串",验证本地到远程数据库的迁移执行通道是否正常。
- Visual Studio FTP发布时,EF迁移是在本地执行
核对发布配置的迁移目标
- 确认「Entity Framework Migrations」选项中指定的DbContext类正确,多DbContext项目易出现选错目标的情况。
- 若迁移代码与Web项目分离,需确认已选中包含DbContext和迁移文件的项目,避免因目标项目错误导致迁移不生效。
查看服务器端应用日志
- 部分场景下迁移会在应用启动时触发,可查看服务器上Blazor应用的日志文件,排查数据库连接或迁移相关错误。
- 可在
Program.cs中添加代码强制启动时执行迁移并记录日志:using (var scope = app.Services.CreateScope()) { var dbContext = scope.ServiceProvider.GetRequiredService<YourDbContext>(); dbContext.Database.Migrate(); }
检查版本兼容性
- 确认EF Core Provider版本(如Pomelo.EntityFrameworkCore.MySql)与MariaDB 11.1.2、.NET 8兼容,.NET 8对应的Pomelo版本需为8.0.x及以上,版本不匹配可能导致脚本无法正常执行。
内容的提问来源于stack exchange,提问作者Claire_Monkey
相关产品推荐
相关产品推荐

