Peut-on avoir une table sans clé primaire dans le framework d'entité?
J'étais juste pratiquer le premier code nouvelle base de données entity framework de msdnje veux savoir si une table sans clé primaire peut être créé dans le code de la première nouvelle base de données EF?
source d'informationauteur Prateek | 2013-03-13
Vous devez vous connecter pour publier un commentaire.
Non vous ne pouvez pas parce que Entity Framework doit connaître la clé pour garder une trace de l'objet lorsque vous effectuez une mise à jour ou supprimer l'opération.
De toute façon ce n'est pas une bonne idée d'avoir une table sans PrimaryKey
Il y a une grande différence entre ce qui fe peut faire avec une base de données, et ce qui est possible avec une base de données.
La plupart des bases de données permettent une table sans clé primaire. La plupart des bases de données permettent en outre une table sans index cluster /Index Organisé une Table (ou ce que jamais, il est le terme spécifique dans d'autres systèmes de base de données).
Il n'y a rien de mal à cela, et on ne devrait pas affirmer que c'est une mauvaise idée d'avoir une table sans un penalty.
Comme toujours, il dependes sur les besoins et l'utilisation de la table spécifique. par exemple, une table de journal, n'a pas besoin d'un penalty. Il ne sera jamais utilisé comme un FK, alors, quel est-il utilise?
Ligne de fond, l'EF ne prend pas en charge les tables sans clé, hors de la boîte, il y a peu bizarre solutions de contournement, mais aucun que j'ai vu est assez bon. C'est une honte.
Si votre table SQL n'est pas une clé primaire, vous pouvez toujours le modèle dans le Cadre de l'Entité, vous aurez juste besoin de définir une touche pour cette Entité. Choisissez un ou plusieurs (peut-être tous) les colonnes sur l'Entité qui, lorsque combinés, permettra d'identifier de manière unique cette instance dans une collection d'entités. Remarque ce n'est important que pour la mise à jour ou la suppression d'entités, qu'elles doivent être identifiés de façon unique contre les autres dans cette collection pour cible le changement. Rechercher/Sélectionner et Ajouter/Insert ne nécessitent pas de cette cohérence.
Parfois l'ajout d'PK n'est pas possible, car il peut être en lecture seule, super protégé de la base de données d'un client à qui vous avez à utiliser.
EF throws exception, même sur une sélection d'opérations. Lorsque j'ai fait face à cette question, j'ai été en mesure de le résoudre comme ceci (les noms sont artificiels):
Dans le fichier de code de contexte:
Donc, fondamentalement, vous avez juste besoin de spécifier les colonnes de la clé primaire.