2011-01-07 3 views
0

J'ai une table mappée dans Entity Framework 4 qui est la table enfant de quelques autres tables. Chaque fois que vous essayez de supprimer une ligne dans cette table, je reçois le message ci-dessous. Cette table a plusieurs clés étrangères à d'autres tables mais c'est toujours la table enfant dans la relation, jamais la primaire. Ce message se produit dès que j'appelle context.DeleteObject (objet), il n'a pas besoin de context.SaveChanges() appelé. J'ai vérifié que toutes les relations sont définies correctement dans le concepteur .edmx. L'opération a échoué: La relation n'a pas pu être modifiée car une ou plusieurs des propriétés de clé étrangère sont non nulles. Lorsqu'une modification est apportée à une relation, la propriété de clé étrangère associée est définie sur une valeur nulle. Si la clé étrangère ne prend pas en charge les valeurs nulles, une nouvelle relation doit être définie, une autre valeur non nulle doit être affectée à la propriété de clé étrangère ou l'objet non lié doit être supprimé.Problème de suppression dans Entity Framework

Tables

Project (1) - (many) ProjectMember (many) - (1) Employee 
    ProjectID (PK)   ProjectMemberID (PK)   EmployeeID (PK) 
    ProjectName (varchar)  ProjectID (FK)    FirstName (varchar) 
          EmployeeID (FK)    LastName (varchar) 
          Role (varchar) 

Pour chaque projet, j'ai plusieurs ProjectMembers qui viennent de la liste des employés de l'entreprise. La suppression d'un ProjectMember ne devrait avoir aucun effet sur la table Projet ou Employé.

Je ne veux pas que les clés FK soient nulles car la relation doit exister.

La suppression se produit à partir d'une grille de données WPF 4 lorsque la suppression est atteinte sur la ligne. J'intercepte la touche delete et appelle context.DeleteObject(). Des idées sur pourquoi l'erreur se produit et comment puis-je obtenir la suppression de travailler? Je n'ai aucun problème à supprimer de la table primaire s'il n'y a pas de lignes dépendantes dans l'enfant

+0

Pouvez-vous fournir les parties pertinentes de votre définition de schéma? – StriplingWarrior

+0

J'ai mis à jour le poste avec plus d'infos. Si vous avez besoin d'autre chose, faites le moi savoir. – Doug

Répondre

0

J'ai trouvé le problème. Pour accéder à ces données, j'avais deux grilles sur l'écran. Le premier liste tous les projets, le second liste les ProjectMembers pour le projet sélectionné. Je remplirais la grille ProjectMember en utilisant le même contexte que celui utilisé pour remplir la grille du projet. D'une manière ou d'une autre, et je ne comprends pas cette partie, la relation qui a produit l'erreur serait établie et appliquée. Mais, si je remplis la grille ProjectMember en utilisant un contexte différent, je peux supprimer les ProjectMembers comme prévu. Je ne sais pas pourquoi Entity Framework se comporte de cette façon, mais cela fonctionne pour moi.

Questions connexes