EntityFramework Core导航属性未找到异常排查与解决
问题原因与解决方案
异常原因
在GoodTripDbContextModelSnapshot的TourCountry实体配置代码中存在拼写错误:
b.Navigation("Tours");
而TourCountry实体类中定义的关联导航属性是单数形式的Tour,并非复数的Tours。Entity Framework Core无法找到名为Tours的导航属性,因此抛出异常。
解决步骤
- 打开
GoodTripDbContextModelSnapshot.cs文件,定位到TourCountry的配置段:modelBuilder.Entity("GoodTrip.DataBase.Entities.TourCountry", b => { b.HasOne("GoodTrip.DataBase.Entities.Country", "Country") .WithMany("TourCountries") .HasForeignKey("CountryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("GoodTrip.DataBase.Entities.Tour", "Tour") .WithMany("TourCountries") .HasForeignKey("TourId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Country"); b.Navigation("Tours"); // 此处为错误代码 }); - 将错误的
b.Navigation("Tours");修改为与实体类匹配的单数形式:b.Navigation("Country"); b.Navigation("Tour"); // 修正为正确的导航属性名称 - 重新执行迁移命令:
Add-Migration [自定义迁移名称] Update-Database
验证
修正后,EF Core可正确识别TourCountry中的Tour导航属性,数据库迁移操作即可正常完成。
内容的提问来源于stack exchange,提问作者Raman Shuliak
相关产品推荐
相关产品推荐

