Каскадное удаление, та же таблица, Entity Framework 4 Code First - PullRequest
6 голосов
/ 08 февраля 2011

Привет, я в настоящее время работаю с базой данных .sdf (Server Compact Version 4.0) и SQL Express. Я пытаюсь настроить каскадное удаление в той же таблице (категория - подкатегория), но получаю, что не могу добавить отношение к той же таблице

Ограничение внешнего ключа имело и обновить или удалить правило каскада, и сам ссылается на столбец в том же стол, не допускается

Что я могу с этим поделать?

EDIT
Я единственный с этой проблемой?

1 Ответ

5 голосов
/ 08 февраля 2011

Как и предполагалось в вашем SQLException, это ограничение SQL Server в целом и не имеет ничего общего с EF или Code First. По сути, SQL Server не позволяет создавать каскадные действия для внутренних связей - когда каскадный путь идет от столбца col1 в таблице A к столбцу col2 также в таблице A. A-> A.

Фактически, Code First пытался использовать Декларативную ссылочную целостность (DRI) для принудительного удаления каскадов и бросков SQL Server.

Единственный способ принудительно использовать каскадные удаления для этого отношения - использовать триггеры. Вы можете написать триггер удаления в таблице категорий, который либо удаляет зависимые строки, либо устанавливает для всех соответствующих внешних ключей значение NULL (в зависимости от ваших требований).

...