Для того, каскад удаляет на Nullable внешних ключей через код первого набора вверх, лучший способ достичь этого, вероятно, через Fluent API.
Добавить этот свободный код API к вашему DbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<SubItem>()
.HasOptional(o => o.MainClass)
.WithMany(m => m.subItems)
.HasForeignKey(k => k.MainClassId)
.WillCascadeOnDelete(true);
}
и ваш класс подэлемента должен быть обновлен с этими свойствами:
Class SubItem
{
[Key] int id {get; set;}
public string name {get;set;}
public int? MainClassId { get; set;}
public virtual MainClass MainClass { get; set; }
}
Я считаю, что если вы удаления элемента MainClass подпунктам ДОЛЖНА быть загружена в контексте (с помощью оператора include при удалении объекта MainClass), который нужно удалить.
, но если вы заходите в свою базу данных и настраиваете этот внешний ключ для включения включенного каскада при удалении, то вам не нужно будет загружать SubItems в контекст, потому что база данных позаботится о том, чтобы каскад удалялся для вас, когда объект MainClass удален.
Я пробовал это, но кажется 1x1, а не 1xMany зависимости. –
@ ДаниэльСантос жаль, у меня было это не так. Я исправил его и обновил ответ на то, как я это делал в прошлом. – JustSomeDude