2010-11-11 2 views
1

Я получаю эту ошибку при создании базы данных из Entity Framework Code First.Представление ограничения FOREIGN KEY может вызвать циклы или несколько каскадных путей?

Я didn't вижу проблему с помощью сценария:

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 внешних ключа при удалении каскада.

ответ

3

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

Я думаю, что вы правы. This ADO.NET team blog post, похоже, решает проблему в комментариях, то есть задает CascadeOnDelete = false в классе PostConfiguration.

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

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