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);
Выше представлена простая настройка двух независимых сущностей: Клуб и Персона, к которым можно присоединиться через членство.
Я думал, что могу просто получить Персона, удалить ее, а затемполагаться на каскадное удаление, чтобы удалить любые записи о членстве и оставить связанные клубы на месте (они существуют независимо).
Точно так же я думал, что могу просто получить клуб, удалить его, а затем рассчитывать на удаление каскадаудалить все записи о членстве и оставить связанных лиц на месте (они существуют независимо).
Кажется, что когда я удаляю "Персона", EF пытается установить значение Membership.PersonId равным нулю, вызывая БДнарушение.
Не понял ли я каскадное удаление?И как я могу достичь желаемого результата?
Я предполагаю, что мог бы извлечь Person.Include («Членство»), а затем перечислить каждое членство и пометить как удаленное, а затем, наконец, пометить Человека как удаленное ... ноэто действительно требуется, или я упускаю трюк?