Entity Framework - удаляет запись таблицы соединений, когда удаляется одна связанная запись - PullRequest
0 голосов
/ 06 июля 2019
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 («Членство»), а затем перечислить каждое членство и пометить как удаленное, а затем, наконец, пометить Человека как удаленное ... ноэто действительно требуется, или я упускаю трюк?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...