Как работает WillCascadeOnDelete в Entity Framework?
Как я понимаю, если я удаляю родительскую строку, ее дочерние элементы должны быть удалены, если я включу cascade on delete. Однако, судя по моему тестированию, это вообще не работает. Независимо от того, если я установил WillCascaseOnDelete в true или false, он просто устанавливает внешний ключ своих дочерних элементов в null. Это вызывает еще одну проблему, которую я должен установить внешний ключ nullable, иначе SaveChange выдаст исключение. Это дефект или желаемое поведение?
2 ответов
Это потому, что ваши внешние ключи (дочерние) являются nullable. По умолчанию при удалении родителя, если внешний ключ в связи имеет значение nullable, EF удалит родителя и установит для внешнего ключа значение null. Если внешний ключ не равен NULL, он удалит ребенка (поведение, которое вы ищете?).
вы можете изменить это поведение по умолчанию здесь
убедитесь, что в окне отношения внешнего ключа в SQL Server вы выбрали Cascade в качестве правила удаления.