Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013
-
30 janv. 2013 à 14:59
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013
-
31 janv. 2013 à 08:52
Bonjour tout le monde,
je suis sur un projet Winform, avec un modèle de donnée et donc utilise Entity Framework. Ma base contient plusieurs tables, dont 2 que je souhaite utiliser (Users et StatutMDP, qui est une table de référence des différents type de mot de passe que l'on peut avoir).
La table StatutMDP contient 2 champs cdtypestatutmdp (Primary Key) et libtypestatutmdp qui est un libellé.
La table Users contient pas mal de champs dont cdtypestatutmdp qui est une clé étrangère faisant référence au la table StatutMDP.
Dans mon application, je crée un User avec par défaut le cdtypestatutmdp = 'I'. Jusque là, pas de problème.
Lorsque le User se connecte, je souhaiterai que la personne change son mot de passe et que du coup cdtypestatutmdp = 'V'
Voici le code que j'avais pensé :
try
{
// Je récupère le User à mettre à jour en incluant la table StatusMDP pour récupérer le statut du mdp
Users l_UserToUpdate g_MediathequeEntities.Users.Include("StatusMDP").First(u> u.ident == p_Ident);
// Je met à jour les champs dont j'ai besoin
l_UserToUpdate.mdp = p_NewMDP;
l_UserToUpdate.StatusMDP.cdtypestatutmdp = "V";
// Je met à jour la base.
g_MediathequeEntities.SaveChanges();
return 1;
}
catch
{
return 0;
}
Mais ce code tombe en erreur et j'ai le message
La propriété « cdtypestatutmdp » fait partie des informations de clés de l'objet et ne peut pas être modifiée.
Est-ce que vous pourriez m'apporter votre aide sur le problème s'il vous plaît.
cs_L0ci
Messages postés224Date d'inscriptionvendredi 26 novembre 2010StatutMembreDernière intervention11 juin 20137 30 janv. 2013 à 16:05
Bonjour,
je pense que le problème vient du fait que tu modifies StatusMDP.cdtypestatutmdp qui est la clef primaire. Essaies de modifier le nom de la colonne clef étrangère et de la modifier comme ca :
Jojo092
Messages postés136Date d'inscriptionsamedi 24 septembre 2005StatutMembreDernière intervention12 avril 2013 31 janv. 2013 à 08:52
Bonjour,
déjà merci pour la réponse, mais le problème est que sur mon objet "l_UserToUpdate", je n'ai pas accès aux clés étrangères, comme j'ai accès aux champs de la table.
Ceci dit, j'ai trouvé une solution qui pourrait peut-être servir aux autres.
// Permet de modifier la valeur d'une clé étrangère dans un modèle de donnée.
l_UserToUpdate.StatusMDPReference.EntityKey = new System.Data.EntityKey("MediathequeEntities.StatusMDP", "cdtypestatutmdp", "V");
En tout cas, merci à toi L0ci pour m'avoir apporté une réponse.