Entity Framework 4.0: erreur 113: la multiplicité n'est pas valide dans le rôle

J'ai mis une nouvelle table dans ma base de données et il y a 4 tables qui ont une relation de clé étrangère avec elle. Je pensais avoir configuré tous les 4 de la même manière, mais j'obtiens cette erreur;

Erreur 15 erreur 113: la multiplicité n'est pas valide dans le rôle 'ReportCellImage' dans la relation 'FK_OtherLeaves_ReportCellImages'. Comme toutes les propriétés du rôle dépendant sont nullables, la multiplicité du rôle Principal doit être ' 0..1'.

Donc pour simplifier mon tableaux;

La table ReportCellImage contient ReportCellImageId champ qui dans la clé primaire et un entier

OtherLeave table contient le ReportCellImageId champ comme une clé étrangère nullable avec une valeur par défaut de 4

Les autres tables sont similaires et toutes ont une clé étrangère configurée pour se joindre à la table ReportCellImage

Il s'agit d'un changement récent, donc lorsque je mets à jour mon fichier edmx à partir de la base de données, Pourquoi obtenir cette erreur et comment la corriger?

56
demandé sur McGarnagle 2012-02-15 15:44:35

8 réponses

Si votre FK est nullable, votre multiplicité dans l'entité principale doit être 0..1-la valeur par défaut n'a aucun rôle dans cela car vous pouvez attribuer null à FK. Donc, toutes vos entités dépendantes doivent être dans 0..1 - * relation avec votre entité principale.

56
répondu Ladislav Mrnka 2012-02-15 11:50:47

J'avais juste le même message et c'était perplexe parce que les tables que j'ai modifiées dans la base de données étaient différentes de celles pour lesquelles je recevais le message.

J'ai essayé de changer la multiplicité 0..1-to-many mais le message a persisté, même après les commandes "exécuter L'outil personnalisé", nettoie et reconstruit.

Résolu en supprimant la relation dont EF se plaignait et en mettant à jour le modèle à partir de DB

57
répondu Sten Petrov 2013-01-13 20:37:16

Faites un clic droit sur la relation dans votre diagramme EDX. Dans proprety, changer End1 multiplicité à 0..1 (zéro ou un de YOURTABLENAME)

8
répondu Pascal Carmoni 2015-06-17 14:20:16

J'ai supprimé la table mise à jour du modèle, puis dans Update Model from Database, l'ai ajoutée à nouveau et cela a aidé.

2
répondu Izzy 2017-04-06 16:29:48

J'utilise une première approche de base de données pour créer le .fichier edmx. Quand j'ai rencontré ce problème, j'ai essayé quelques-unes des suggestions ci-dessus, mais j'ai toujours eu des erreurs, donc j'ai supprimé le .fichier edmx et actualisé le fichier entier de la base de données mise à jour.

J'ai trouvé que parfois EF est confus après les mises à jour de la base de données existante, et bien qu'il soit idéal pour trouver la cause première, passer une heure à travailler sur quelque chose peut ne pas être possible dans un environnement de travail (tel que le mien)

Notre base de données est nouvelle et petite, donc l'actualisation du fichier est facile et ne prend pas si longtemps.
Problème est parti, passer à autre chose . . .

2
répondu armstb01 2017-11-28 16:50:04

J'ai eu le même problème après avoir ajouté une nouvelle table, j'ai essayé toutes les solutions ici, y compris la suppression de la relation, mais cela n'a pas fonctionné. La solution qui a fonctionné pour moi était de supprimer complètement le modèle et créer un nouveau modèle. N'oubliez pas de supprimer la chaîne de connexion sur le web.config afin que votre nouvel EF puisse utiliser le même nom.

0
répondu Graham Walker 2016-06-15 02:55:35

Après avoir supprimé la référence D'entité dans les classes d'entité, puis supprimé la référence manuellement dans la base de données, puis les remettre étape par étape pour résoudre le problème que j'ai réalisé après avoir terminé la solution rapide aurait été de remplacer WithOptional WithRequired dans le contexte après avoir changé le champ de nullable à non nullable.

protected override void OnModelCreating(DbModelBuilder modelBuilder)

0
répondu Clarence 2017-01-04 21:22:43

Changez multiplicité= " 1 "en multiplicité=" 0..1"

 <Association Name="FK_O_Personel_PBS_AtanmaSekilleri">
          <End Type="eKampus_RTEUModel.PBS_AtanmaSekilleri" Role="PBS_AtanmaSekilleri" Multiplicity="0..1" />
          <End Type="eKampus_RTEUModel.O_Personel" Role="O_Personel" Multiplicity="*" />
          <ReferentialConstraint>
            <Principal Role="PBS_AtanmaSekilleri">
              <PropertyRef Name="ID" />
            </Principal>
            <Dependent Role="O_Personel">
              <PropertyRef Name="atamaSekliID" />
            </Dependent>
          </ReferentialConstraint>
        </Association>
0
répondu nazim hatipoglu 2018-09-24 12:45:46