Entity Framework Core迁移报Unable to determine relationships错误原因是什么
问题原因
LinkedArticle实体同时存在两个指向Article的外键关联,EF Core默认无法判断Article类中的LinkedArticles集合要绑定到ArticleId还是RelatedArticleId上,因此抛出配置冲突错误。
解决方案
在DbContext的OnModelCreating方法中手动指定关联关系即可,参考配置如下:
protected override void OnModelCreating(ModelBuilder modelBuilder) { // 配置主文章和关联列表的对应关系 modelBuilder.Entity<LinkedArticle>() .HasOne(x => x.Article) .WithMany(x => x.LinkedArticles) .HasForeignKey(x => x.ArticleId) .OnDelete(DeleteBehavior.Restrict); // 配置被关联文章的关联关系 modelBuilder.Entity<LinkedArticle>() .HasOne(x => x.RelatedArticle) .WithMany() .HasForeignKey(x => x.RelatedArticleId) .OnDelete(DeleteBehavior.Restrict); // 其余原有配置保持不变 }
如果你需要同时支持查询某篇文章被哪些其他文章关联,可以在Article类中新增一个反向导航属性:
// Article类中新增属性 public ICollection<LinkedArticle> RelatedToArticles { get; set; }
同步修改RelatedArticle部分的配置:
modelBuilder.Entity<LinkedArticle>() .HasOne(x => x.RelatedArticle) .WithMany(x => x.RelatedToArticles) .HasForeignKey(x => x.RelatedArticleId) .OnDelete(DeleteBehavior.Restrict);
调整完成后重新执行添加迁移操作即可正常生成表结构,你可以直接通过Article.LinkedArticles查询指定文章下的所有关联文章。
内容的提问来源于stack exchange,提问作者Roxy'sPro
相关产品推荐
相关产品推荐

