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
相关产品推荐
相关产品推荐

