Я использую EF Core 3.1.1, но я считаю, что этот вопрос относится ко всем версиям EF.
Кажется, EF имеет возможность каскадного удаления - если оно включено, и если зависимые объекты загружаются в контекст.
var blog = context.blogs.Include(x => x.Posts).First(x => x.BlogId == id);
context.blogs.Remove(blog);
Приведенное выше утверждение удаляет все сообщения блога, а затем блог - каждый с отдельным оператором sql.
Это то, что я однако при использовании code-first он также создает таблицы с включенным каскадным удалением в базе данных. (ON DELETE CASCADE
)
Можно ли включить каскадное удаление в EF и полагаться на EF-удаление зависимых объектов, не включая также каскадное удаление на уровне базы данных? (Или я неправильно это понимаю?)
Причина в том, что миграции не удаются, потому что SQL не разрешит каскадное удаление в базе данных, так как обнаруживает несколько каскадных путей (даже если множественные пути не возникнут естественным образом в схема)
Спасибо!