2010-11-11 3 views
1

Je reçois cette erreur lors de la génération de la base de données à partir d'Entity Framework Code First.L'introduction de la contrainte FOREIGN KEY peut provoquer des cycles ou plusieurs chemins en cascade?

Je n'allez pas voir un problème avec le script:

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; 

Chaque référence est à différentes tables!

Je ne peux en avoir qu'un en cascade par table?

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

Si j'ai 3 tables: Les utilisateurs, les contributions et les votes.

Et les relations:

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

Sql correctement générer une erreur, parce que si Je supprime un message, j'aurai 2 chemin d'accès aux Votes: Utilisateur -> Vote et Utilisateur -> Message -> Vote

Mais le cadre d'entité ne détecte pas cela et génère la clé étrangère 3 avec sur cascade de suppression.

Répondre

3

Edit: Je pense avoir trouvé le problème, le bug est EF

Je pense que vous avez raison. This ADO.NET team blog post semble résoudre le problème dans les commentaires, c'est-à-dire définir CascadeOnDelete = false dans la classe PostConfiguration.

Questions connexes