Введение ограничения xx FOREIGN KEY в таблицу yy может привести к циклам или нескольким каскадным путям - PullRequest
0 голосов
/ 03 ноября 2011

Я прочитал этот ответ , однако прошло более 2 лет, и я надеялся, что может быть ответ, касающийся конкретно Entity Framework.

Чтобы объяснить быстро, яесть тип, который может ссылаться на себя, я был снова и снова над схемой, и я уверен, что это лучший способ достичь этого ...

enter image description here

Этоникогда не будет ссылаться на себя, оно всегда будет новым, поэтому эта ошибка не должна вызывать проблем.

При этом я полностью понимаю, что технически в SQL он может ссылаться на себя, однако, это никогда не будет (из кода).

Отключение каскадного удаления позволяет это работать, однако я действительно не хочу отключать это, поскольку это сложная программа, и я использую преимущество Cascade Delete "выше"в цепочке.

1 Ответ

0 голосов
/ 03 ноября 2011

Если SQL жалуется на множественные каскадные пути, делать нечего, вы просто не можете использовать каскадное удаление в базе данных для такого случая, но вы можете использовать обходной путь - вместо использования встроенного каскадного удаления используйте INSTEAD OF DELETE триггер и пишите собственный SQL сначала удалить зависимую запись, а затем удалить основную запись. В EF попробуйте использовать каскадное удаление, потому что в этом случае уровень базы данных должен быть прозрачным для EF.

...