46 votes

Problèmes de mappage One-To-One d'Entity Framework

En utilisant VS 2010 beta 2, ASP.NET MVC.

J'ai essayé de créer un fichier Entity framework et de récupérer les données de ma base de données.

Il y avait quelques problèmes avec les relations, alors j'ai commencé à modifier les choses, mais je continuais à obtenir l'erreur suivante pour les relations simples de un à un

Erreur 1 Erreur 113 : La multiplicité n'est pas valide dans le rôle 'UserProfile' dans la relation 'FK_UserProfiles_Users'. Comme les propriétés du rôle dépendant ne sont pas les propriétés clés, la limite supérieure de la multiplicité du rôle dépendant doit être *. myEntities.edmx 2024

Ma table Utilisateurs est constituée de plusieurs autres relations many-to-many avec d'autres tables, mais lorsque j'essaie de créer une relation one-to-one avec d'autres tables, cette erreur apparaît.

Table des utilisateurs

  • ID utilisateur
  • Nom d'utilisateur :
  • Courriel :

etc.

Table UserProfiles

  • UserProfileID
  • UserID (FK pour la table des utilisateurs)
  • Localisation
  • Anniversaire

66voto

Jacob Proffitt Points 8187

Pour les relations biunivoques, EF s'attend à ce que les tables utilisent la même clé primaire. Et en fait, s'il s'agit d'une vraie relation biunivoque, il est probable que les tables utilisent la même clé primaire. debe . Ainsi, dans votre exemple, si vous faites de UserID la clé primaire de la table UserProfiles, votre one-to-one fonctionnera.

12 votes

J'ai eu ce problème en essayant de configurer une relation 0..1 to 1 entre une table principale et une table d'extension. La table d'extension a beaucoup d'autres relations et je ne veux pas toucher au PK de celle-ci. Avez-vous des idées pour résoudre ce type de situation ?

1 votes

@junior : il s'agit d'une relation de clé étrangère et vous pouvez l'obtenir en sélectionnant la relation, en allant dans les propriétés et en modifiant les paramètres "End1 Multiplicity" et "End2 Multiplicity" (je ne suis pas sûr que cela soit réservé à VS 2010, cependant). Le plus souvent, vous définirez "End2 Multiplicity" sur "0..1".

0 votes

Il n'y a pas "devrait" même si EF ne peut pas gérer correctement les multiplicités normales de RA et oblige donc à modifier une conception de RA parfaitement bonne. Cela n'empêche pas sous-entend que le modèle devrait être changé, le cas actuel mis à part - signifie que EF, et il semble toujours cassé aujourd'hui, devrait être Correction de pour modéliser correctement le domaine de la base de données RA.

10voto

kraeg Points 48

J'ai un problème similaire, mais avec un scénario de vente et de mise en réserve.

Une réserve peut exister sans vente, et une vente peut exister sans réserve. Cela signifie que j'ai un 0 ou 1 a 0 ou 1 relation.

Layby fait référence à sale, mais layby ne peut pas utiliser la clé primaire de Sale, et Sale ne peut pas utiliser la clé primaire de Layby.

J'ai résolu le problème en utilisant un 0 ou 1 a beaucoup de J'ai configuré le getter et le setter "Laybys" de la vente comme étant privés, puis j'ai fourni mon propre getter et setter "Layby" dans mon POCO.

3 votes

Je suis curieux, avez-vous déjà trouvé une meilleure façon de capturer ce genre de relation ?

0voto

Ashish Kamble Points 173

Créer un ensemble de clés primaires composites pour deux colonnes UserProfileID et UserID

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X