J'ai le model suivant:
Je souhaite que la suppression automatique fonctionne en cas de suppression, à la fois parce que c'est pratique, que mes données sont cohérentes et parce qu'elles sont bien sockets en charge dans Entity Framework Code First. Le problème est que ce model spécifique provoque plusieurs paths en cascade. Cela se traduit par SQL Server me donne l'erreur suivante lorsque j'essaie de générer la database via EF Code First:
L'introduction de la contrainte FOREIGN KEY 'FK_dbo.Events_dbo.Tournaments_Tournament_Id' sur la table 'Event' peut provoquer des cycles ou plusieurs paths en cascade. Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION ou modifiez d'autres contraintes FOREIGN KEY.
- Comment représenter physiquement une relation parent-enfant, avec un favori, en imposant des contraintes?
- Comment modifier les tables existantes pour l'ajout de timezone
- Quelle est la meilleure approche pour récupérer des loggings d'une table qui stocke son historique?
- Quelle est la meilleure solution pour concevoir une relation de table sql pour une table qui sera utilisée par d'autres tables
- Stockage de différents types de données dans une colonne pour réduire le nombre de tables
Je comprends que lors de la suppression d'un Tournament
, ce serait une course, que la suppression du Contestant
ou de l' Event
triggers ou non la suppression de EventContestant
. SQL Server n'apprécie pas cela.
Maintenant, la question est, y at-il quelque chose de mal avec mon model? Y a-t-il d'autres façons de modéliser ces données ou d'effectuer une configuration pour résoudre ce problème? J'aimerais respecter les exigences suivantes:
Tournament
doit se EventContestant
sur Event
, Contestant
et EventContestant
Event
doit être EventContestant
sur EventContestant
Contestant
doit être EventContestant
sur EventContestant
Je pourrais résoudre le problème en introduisant une key primaire séparée dans EventContestant, au lieu de la key combinée des deux propriétés de navigation, mais alors je casserais les exigences 1 à 3. D'autres suggestions?
Maintenant, la question est, y at-il quelque chose de mal avec mon model?
Pas nécessairement. Les dependencies en forme de losange sont assez courantes dans la modélisation de database.
Le problème est que MS SQL Server ne supporte pas les actions référentielles automatiques sur ces dependencies, même si elles peuvent être une situation parfaitement valide du sharepoint vue logique. En d'autres termes, votre outil est plus limitant qu'il ne devrait l'être.
Vous devrez utiliser des triggersurs pour implémenter des cascades.