实体框架-删除一个链接记录时删除联接表记录

时间:2019-07-05 22:07:49

标签: entity-framework-6 many-to-many

public class Club
{
    public int ClubId { get; set; }
    public string Name { get; set; }
    public ICollection<Membership> Memberships { get; set; }
}

public class Person
{
    public int PersonId { get; set; }
    public string Name { get; set; }
    public ICollection<Membership> Memberships { get; set; }
}

public class Membership
{
    public int ClubId { get; set; }
    public int PersonId { get; set; }

    public Club Club { get; set; }
    public Person Person { get; set; }
}`

...

modelBuilder.Entity<Person>()
    .HasMany(p => p.Memberships)
    .WithRequired(m => m.Person)
    .WillCascadeOnDelete(true);

上面是两个独立实体的简单设置:Club和Person,可以通过成员身份加入。

我以为我可以简单地检索一个人,将其删除,然后依靠级联删除来删除任何会员记录,并将相关的俱乐部保留在原处(它们独立存在)。

类似地,我以为我可以简单地检索俱乐部,将其删除,然后依靠级联删除来删除艾米(Amy)会员记录,并将关联的人员保留在原处(它们独立存在)。

似乎当我删除“ Person”时,EF尝试将Membership.PersonId的值设置为null,从而导致数据库冲突。

我是否误解了级联删除?我怎么能达到预期的效果?

我想我可以检索Person.Include(“ Membership”),然后枚举每个成员身份并将其标记为已删除,然后最终将Person标记为已删除...但这真的是必需的,还是我错过了一个窍门? / p>

0 个答案:

没有答案