2011-02-08 4 views
6

Привет, Im в настоящее время работает с .sdf-базой данных (Server Compact Version 4.0) и sql express. Я пытаюсь установить каскадное удаление в одной таблице (категория - подкатегория), но я получаю, что я не могу добавить отношение к той же таблице.Cascade Delete, та же таблица, Entity Framework 4 Сначала код

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

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

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

ответ

5

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

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

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

Смежные вопросы