Введение ограничения FOREIGN KEY может вызвать циклы или множественные каскадные пути? - PullRequest
1 голос
/ 11 ноября 2010

Я получаю эту ошибку при генерации базы данных из кода Entity Framework First.

Я не видел никаких проблем со скриптом:

alter table [dbo].[Votes] add constraint [Post_Votes] foreign key ([Post_Id]) references [dbo].[Posts]([Id]) on delete cascade;

alter table [dbo].[Votes] add constraint [User_Votes] foreign key ([Voter_Id]) references [dbo].[Users]([Id]) on delete cascade;

Каждая ссылка на разные таблицы!

У меня может быть только один каскад для удаления на таблицу?

Edit: I think I found the problem, the bug is EF:

Если у меня есть 3 таблицы: пользователи, сообщения и голоса.

А отношения:

Post.AuthorId -> User.Id Votes.PostId -> Post.Id Votes.UserId -> User.Id

Sql правильно генерирует ошибку, потому что если я удалю сообщение, у меня будет 2 пути к Голосам: Пользователь -> Голосовать и Пользователь -> Сообщение -> Голосовать

Но структура сущностей не обнаруживает это и генерирует внешний ключ 3 с помощью каскада удаления.

1 Ответ

3 голосов
/ 11 ноября 2010

Редактировать: Я думаю, что я нашел проблему, ошибка EF

Я думаю, что вы правы. Это сообщение в блоге команды ADO.NET , кажется, решает проблему в комментариях, т.е. устанавливает CascadeOnDelete = false в классе PostConfiguration.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...