我正在尝试在联系和技能之间的许多关系上使用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);
}
获取,删除,发布请求有效。
但是当我尝试更新联系人时,我会更新它,但不会更新相关的技能。 在控制器中,如果我查看联系人,则该联系人没有技能
也许这就是为什么更新无法正常进行的原因,但我不知道为什么。