You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EF Core访问关联表条目时查找不存在的表问题求助

EF Core 8.0.2 多对多关联表名称错误解决方案

问题出在EF Core默认按约定生成中间表名称,而你的数据库中间表是CitizenRequestKind_Document,自动脚手架未正确识别,导致查询时调用了不存在的Document.CitizenRequestKindDocument表。只需在Fluent API配置中明确指定中间表的名称和外键列即可,无需创建中间表模型:

var docBuilder = modelBuilder.Entity<Document>();
docBuilder.HasMany(e => e.IdCitizenRequestKinds)
          .WithMany(e => e.IdDocuments)
          .UsingEntity(j => j.ToTable("CitizenRequestKind_Document") // 指定数据库中实际的中间表名
              .HasOne<CitizenRequestKind>()
              .WithMany()
              .HasForeignKey("CitizenRequestKindId") // 替换为中间表对应CitizenRequestKind的外键列名,需与数据库一致
              .OnDelete(DeleteBehavior.Cascade)
              .HasOne<Document>()
              .WithMany()
              .HasForeignKey("DocumentId") // 替换为中间表对应Document的外键列名,需与数据库一致
              .OnDelete(DeleteBehavior.Cascade));

关键注意点

  • 必须确保外键列名与数据库中CitizenRequestKind_Document表的列完全匹配,比如数据库中如果是IdCitizenRequestKind,就把CitizenRequestKindId改成对应名称。
  • 若数据库中外键有自定义约束名,可通过HasConstraintName方法补充配置,无约束名可省略该部分。
  • 配置完成后,重启应用或重新生成迁移(若使用迁移)使配置生效。

内容的提问来源于stack exchange,提问作者user2173353

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 12:03:13