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>