EF Core模型引用其他模型类型时外键创建报错问题咨询
问题诱因
- EF Core 迁移生成逻辑异常:你生成的迁移代码里,外键约束写死了关联表名为单数的
Project,但你在ApplicationDbContext中声明的DbSet<Project>默认对应的表名是复数形式Projects,二者不匹配导致外键找不到目标表。 - 迁移步骤顺序错误:你本次生成的迁移文件大概率没有包含创建
Projects表的逻辑,或者创建Projects表的步骤排在了给Companies表加外键的步骤之后,执行时还没建表就先加外键,直接触发报错。 - 模型配置冲突:如果你之前全局配置过单数表名生成规则,或者单独给
Project类指定过特殊表名但配置未生效,也会出现表名不匹配的问题。
修复步骤
- 先执行
Remove-Migration命令删除当前生成的错误迁移文件。 - 重新运行
Add-Migration AddCompanyProjectRelation命令生成新的迁移文件,打开文件检查Up方法:- 确认存在创建
Projects表的代码段 - 确认外键约束语句中引用的目标表名是
Projects而非Project
- 确认存在创建
- 如果表名仍然生成错误,可在
ApplicationDbContext中手动指定映射规则,添加如下代码:
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); // 显式指定Project模型对应的表名 modelBuilder.Entity<Project>().ToTable("Projects"); }
- 确认迁移代码无误后,运行
Update-Database即可完成更新。
内容的提问来源于stack exchange,提问作者Krellex
相关产品推荐
相关产品推荐

