Entity Framework中同一实体间两个多对多关系的配置问题
解决Entity Framework多对多关系自动识别错误的Fluent API配置方案
由于你在User和Skill之间定义了两个独立的多对多关系,EF Core无法自动匹配双向导航属性的对应关系,因此需要通过Fluent API手动明确每个关系的两端关联。
在你的DbContext类中重写OnModelCreating方法,添加以下配置:
protected override void OnModelCreating(ModelBuilder modelBuilder) { // 配置用户自认证技能的多对多关系 modelBuilder.Entity<User>() .HasMany(user => user.SelfIdentifiedSkills) .WithMany(skill => skill.SelfIdentifiedUsers) .UsingEntity(joinEntity => joinEntity.ToTable("UserSelfIdentifiedSkills")); // 配置用户官方认证技能的多对多关系 modelBuilder.Entity<User>() .HasMany(user => user.CertifiedSkills) .WithMany(skill => skill.CertifiedUsers) .UsingEntity(joinEntity => joinEntity.ToTable("UserCertifiedSkills")); }
配置说明:
HasMany指定当前实体(User)的集合导航属性WithMany关联到目标实体(Skill)对应的反向导航属性UsingEntity用于指定多对多关系的中间表名称,避免EF自动生成难以区分两个关系的模糊表名
配置完成后,重新执行Add-Migration命令即可正常生成迁移文件。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

