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設置爲​​級聯刪除的意見。