Azure环境下执行Add-Migration InitialCreate时Asp Net Core Code-First报错
解决EF Core迁移中“无效的对象名称'Blogs'”的问题
兄弟,你这个问题我之前踩过坑,核心原因大概率是混淆了EF6和EF Core的迁移命令,再加上可能的配置小疏漏。咱们一步步来排查修复:
先理清EF版本的差异:你执行的
Enable-Migrations –EnableAutomaticMigrations是老版本EF6的命令,EF Core里根本没这个操作!这命令不仅帮不上忙,反而可能给项目添乱,别再用它了。检查DbContext的核心配置:打开你的DbContext类,确认里面有没有声明对应的DbSet:
public DbSet<Blog> Blogs { get; set; }如果没加这行,EF Core根本不会把Blog实体纳入迁移范围,自然不会生成创建Blogs表的代码。另外也要确保Blog实体有正确的主键配置(比如
public int Id { get; set; }),不然EF也无法识别它是可迁移的实体。清理残留的错误配置:
- 删掉项目里自动生成的
Migrations文件夹(如果已经存在的话) - 登录Azure数据库管理界面,检查有没有
__EFMigrationsHistory表,如果有就删掉它——这是EF Core记录迁移历史的表,之前的错误操作可能留下了脏数据,影响新的迁移生成。
- 删掉项目里自动生成的
重新执行正确的迁移命令:
- 打开Package Manager Console(或者终端),切换到包含DbContext的项目目录
- 生成初始迁移:
Add-Migration InitialCreate- 如果你的DbContext在类库项目,Web项目是启动项目,需要加参数指定:
Add-Migration InitialCreate -Project 你的数据层项目名 -StartupProject 你的Web项目名
- 如果你的DbContext在类库项目,Web项目是启动项目,需要加参数指定:
- 把迁移应用到Azure数据库:
Update-Database
最后确认权限和连接字符串:确保你用的数据库连接字符串正确指向Azure数据库,并且数据库账号有创建表、修改Schema的权限——Azure默认的管理员账号是有权限的,但如果是自定义账号,得检查一下权限设置。
按照这个流程走下来,应该就能顺利创建Blogs表了。
内容的提问来源于stack exchange,提问作者patrick
相关产品推荐
相关产品推荐

