Problèmes de mappage un à un dans Entity Framework

entity-framework

Question

Utilisation de VS 2010 beta 2, ASP.NET MVC.

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

Il y avait quelques problèmes avec les relations, alors j'ai commencé à peaufiner les choses, mais je continuais à avoir l'erreur suivante pour des relations simples et simples.

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

Mon tableau d'utilisateurs est constitué de quelques autres relations plusieurs-à-plusieurs avec d'autres tables, mais lorsque j'essaie d'établir une relation un-à-un avec d'autres tables, cette erreur apparaît.

Tableau des utilisateurs

  • Identifiant d'utilisateur
  • Nom d'utilisateur
  • Email

etc..

Table UserProfiles

  • UserProfileID
  • ID utilisateur (FK pour la table des utilisateurs)
  • Emplacement
  • Anniversaire

Réponse acceptée

Pour les relations un à un, EF s'attend à ce que les tables utilisent la même clé primaire. Et vraiment, si c'est un vrai one-to-one, ils devraient probablement. Ainsi, dans votre exemple, si vous définissez UserID comme clé primaire dans la table UserProfiles, votre one-to-one fonctionnera.


Réponse populaire

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

Un layby peut exister sans vente et une vente peut exister sans layby. Cela signifie que j'ai une relation de 0 ou 1 à 0 ou 1 .

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 une relation de 0 ou 1 à plusieurs , j'ai configuré le getter et le setter "Laybys" sur la vente comme privé, puis j'ai fourni mon propre getter et setter "Layby" dans mon POCO.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow