0

私は2つのクラスの間に多対多の関係を作成しました。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

削除時にカスケードするデータベースのFKの設定に関するRedHatからのコメントを参照してください。

関連する問題