EF核心和多对多HttpPUT无法正常工作

时间:2020-07-08 12:51:53

标签: c# api entity-framework-core many-to-many put

我正在尝试在联系和技能之间的许多关系上使用HtppPUT。我的对象是这样的:

联系人:

 public class ContactDB
{
    [Key]
    public int ContactId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullName { get; set; }
    public string Address { get; set; }
    public string Email { get; set; }
    public string PhoneNumber { get; set; }

    public List<ContactSkill> ContactSkills { get; set; }
}

技能:

public class SkillDB
{
    public int SkillId { get; set; }
    public string SkillName { get; set; }
    public int Level { get; set; }

    public List<ContactSkill> ContactSkills { get; set; }
}

ContactSkills:

 public class ContactSkill
{
    public int ContactId { get; set; }
    public virtual ContactDB Contact { get; set; }
    public int SkillId { get; set; }
    public virtual SkillDB Skill { get; set; }
}

上下文:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ContactDB>()
        .HasKey(c => c.ContactId);

        modelBuilder.Entity<SkillDB>()
            .HasKey(s => s.SkillId);

        // Define link between Contacts and Skills
        modelBuilder.Entity<ContactSkill>()
            .HasKey(cs => new { cs.ContactId, cs.SkillId });
        modelBuilder.Entity<ContactSkill>()
            .HasOne(cs => cs.Contact)
            .WithMany(c => c.ContactSkills)
            .HasForeignKey(cs => cs.ContactId);
        modelBuilder.Entity<ContactSkill>()
            .HasOne(cs => cs.Skill)
            .WithMany(s => s.ContactSkills)
            .HasForeignKey(cs => cs.SkillId);
    }

获取,删除,发布请求有效。

但是当我尝试更新联系人时,我会更新它,但不会更新相关的技能。 在控制器中,如果我查看联系人,则该联系人没有技能

Context Contact

也许这就是为什么更新无法正常进行的原因,但我不知道为什么。

0 个答案:

没有答案