web-dev-qa-db-fra.com

Problèmes de mappage un à un dans Entity Framework

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é à modifier les choses, mais je continuais à avoir l'erreur suivante pour les relations 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 se produit.

Tableau des utilisateurs

  • Identifiant d'utilisateur
  • Username
  • Email

etc..

Tableau UserProfiles

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

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 probablement devrait . Ainsi, dans votre exemple, si vous définissez UserID comme clé primaire dans la table UserProfiles, votre one-to-one fonctionnera. 

66
Jacob Proffitt

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 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 0 ou 1 to many , 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 .

10
kraeg

Définir le jeu de clés primaires composites pour deux colonnes UserProfileID et UserID 

0
Ashish Kamble