0

I created a many-to-many relationship between two classes.

public class Member
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid MemberId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Group> Groups { get; set; } 

    public Member()
    {
        Groups = new HashSet<Group>();
    }
}

public class Group
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid GroupId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Member> Members { get; set; } 

    public Group()
    {
        Members = new HashSet<Member>();
    }
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Group>().HasMany(x => x.Members).WithMany(c => c.Groups)
        .Map(y =>
                 {
                     y.MapLeftKey("GroupId");
                     y.MapRightKey("MemberId");
                     y.ToTable("Group_to_Member");
                 });
}

This works if i test it:

var member = new Member();
member.Name = "Smith";
db.Members.Add(member);

var group = new Group();
group.Name = "Group 1";
db.Groups.Add(group);

member.Groups.Add(group);
group.Members.Add(member);

db.SaveChanges();

But how can i delete a member from a group? I tried this: var group = db.Groups.First(); db.Groups.Remove(group); db.SaveChanges();

I just keep getting "The DELETE statement conflicted with the REFERENCE constraint". So how can i tell it to first remove the association and then the entry?

Patrick
  • 5,442
  • 9
  • 53
  • 104

1 Answers1

0

See comment from RedHat regarding setting the FK in the database to cascade on delete.

Patrick
  • 5,442
  • 9
  • 53
  • 104