Je dispose d'une base de données existante avec laquelle je souhaite créer une nouvelle application en utilisant les éléments suivants EF4.0
Certaines tables n'ont pas de clés primaires définies, de sorte que lorsque je crée un nouveau modèle de données d'entité, j'obtiens le message suivant :
The table/view TABLE_NAME does not have a primary key defined
and no valid primary key could be inferred. This table/view has
been excluded. To use the entity, you will need to review your schema,
add the correct keys, and uncomment it.
Si je veux les utiliser et modifier les données, dois-je nécessairement ajouter un PK à ces tables, ou existe-t-il une solution de contournement pour ne pas avoir à le faire ?
22 votes
Pour citer Joe Celko : si elle n'a pas de clé primaire, ce n'est pas une table . Pourquoi diable quelqu'un créerait-il une table "normale" sans clé primaire ? Ajoutez simplement ces PK ! Vous en aurez besoin - plutôt tôt que tard....
2 votes
+1 même si vous avez cité celko ;-)
4 votes
Si c'est une vue ce hava un regard ce cas stackoverflow.com/a/10302066/413032
0 votes
S'il n'y a pas de colonnes uniques, vous pouvez toujours ajouter une colonne d'identité et en faire le PK.
58 votes
Il est parfaitement valable que toutes les tables n'aient pas besoin d'une clé primaire. Pas souvent utile, mais valable. Confondre EF est une bonne raison, même si cela ne demande pas beaucoup d'efforts ;-).
29 votes
Imaginez que je ne puisse pas modifier la structure de la base de données de mon entreprise et qu'elle ait été créée par quelqu'un qui ne veut pas changer la structure des tables, ce scénario est possible.
1 votes
Je ressens votre douleur, l'héritage n'est pas un bon endroit pour être
4 votes
C'est exactement là où nous en sommes. Nous devons travailler avec une base de données Oracle tierce qui n'a pas de clés primaires.
2 votes
Les tables de faits dans l'entreposage de données sont des exemples de tables qui peuvent ne pas avoir recours à une clé primaire. Voir cette réponse stackoverflow.com/a/21298708/1071200
0 votes
@marc_s, j'ai déjà vu cette citation attribuée à Joe Celko, mais je n'ai pas réussi à trouver de preuves qu'il l'ait réellement prononcée. Pouvez-vous m'aider ? Pouvez-vous me fournir le nom du livre ou du blog où il l'a dit ? Merci !