Est-il avantageux d'utiliser des clés primaires multicolonnes (composites) pour une table de relations plusieurs à plusieurs lors de l'utilisation de Linq to SQL? Ou devrais-je simplement ajouter une colonne d'identité en tant que clé primaire non groupée et indexer les colonnes FK de manière appropriée?Est-il avantageux d'utiliser des clés primaires multicolonnes (composites) lors de l'utilisation de Linq to SQL?
Répondre
Pas un problème LINQ. Si vous en avez besoin pour votre schéma, utilisez-les. Si vous ne le faites pas, ne le faites pas. De toute façon, LINQ gérera votre schéma très bien. Un domaine que LINQ to SQL ne gère pas bien est la table de mappage de colonnes/clés qui est utilisée pour connecter une relation many-to-many, mais je ne dirais pas que cela se trouve dans la catégorie que votre question aborde. Vous pouvez toujours effectuer des opérations CRUD sur une table de mappage dans LINQ mais LINQ ne peut pas parcourir la relation présentée par une table de mappage plusieurs à plusieurs. (LINQ fonctionne bien avec un à un et un à plusieurs tables.)
Je ne peux pas parler d'un problème avec Entity Framework mais encore une fois, je serais très surpris si l'EF avait des problèmes avec multi-colonne/tables à plusieurs touches.
S'il est logique dans votre domaine d'avoir une clé composée de plusieurs colonnes, utilisez-en une. Sinon, utilisez la colonne d'identité habituelle comme clé primaire de substitution.
EDIT: c'était un conseil général et ne tenait pas compte des aspects techniques de l'implémentation de LINQtoSQL. Ceux-ci peuvent intéresser:
Je suppose que cela signifie que Linq to SQL peut gérer des clés composites sans décomposer ou effort supplémentaire? –
- 1. Enregistrements LINQ to SQL aléatoires avec les clés primaires "int"
- 2. Linq à Sql associations d'entités (clés primaires non entières)
- 3. Réplication de base de données avec des clés composites?
- 4. Elixir (sqlalchemy): les relations entre les 3 tables avec des clés primaires composites
- 5. Clés et contraintes primaires
- 6. Postgres: Comment faire des clés composites?
- 7. Scoped/clés de substitution composites dans MySQL
- 8. Erreur lors de l'insertion de données avec LINQ to SQL
- 9. Mappage des clés primaires multiples NHibernate
- 10. Linq to SQL - mappage plusieurs à plusieurs
- 11. Tests unitaires et clés primaires
- 12. Linq To SQL OrderBy, problème lors de l'utilisation d'enums
- 13. LINQ Recherche de mots-clés avec orderby pertinence en fonction du nombre (LINQ to SQL)
- 14. Version de LINQ to SQL
- 15. linq to sql + stackoverflow exception lors de l'interrogation d'objets
- 16. Pouvez-vous utiliser ADO.NET SQLCommandBuilder avec des clés composites?
- 17. SQL: que font exactement les clés primaires et les index?
- 18. Sql Query to Linq To Sql
- 19. Pensez-vous qu'il est avantageux de passer à Entity Framework?
- 20. .net Jeu de clés primaires - Mise en application de l'unicité?
- 21. Numéro VS Varchar (2) Clés primaires
- 22. LINQ to SQL
- 23. Classes LINQ to SQL
- 24. LINQ To SQL Paging
- 25. LINQ to SQL Particularités
- 26. LINQ-to-SQL IN()
- 27. Conventions de dénomination de contraintes de clés primaires NHibernate fluentes
- 28. Linq-to-SQL ToDictionary()
- 29. LINQ to SQL, Generalization
- 30. LINQ to SQL Table Coalesce
En fait, c'était précisément un problème de table de relation –