0

我在两个类之间创建了一个多对多的关系。EF 4.2代码第一,如何删除多对多的关联?

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"); 
       }); 
} 

这工作,如果我测试:

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(); 

但我怎样才能删除组成员?我尝试过: var group = db.Groups.First(); db.Groups.Remove(group); db.SaveChanges();

我只是不断收到“DELETE语句与REFERENCE约束冲突”。 那么我怎么能告诉它首先删除关联,然后输入?

+2

在您的数据库中,将引用的属性设置为级联删除。 –

+0

工作就像一个魅力。 – Patrick

回答

0

查看来自RedHat的关于将数据库中的FK设置为​​级联删除的意见。