Update dans BDD via entity framework [Résolu]

Jojo092 137 Messages postés samedi 24 septembre 2005Date d'inscription 12 avril 2013 Dernière intervention - 30 janv. 2013 à 14:59 - Dernière réponse : Jojo092 137 Messages postés samedi 24 septembre 2005Date d'inscription 12 avril 2013 Dernière intervention
- 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.

Je vous remercie d'avance.

Cordialement.
Afficher la suite 

2 réponses

Répondre au sujet
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 30 janv. 2013 à 16:05
0
Utile
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 :
 l_UserToUpdate.nouveauNom = "V";
qui devrait donc modifier la colonne FK.
Commenter la réponse de cs_L0ci
Jojo092 137 Messages postés samedi 24 septembre 2005Date d'inscription 12 avril 2013 Dernière intervention - 31 janv. 2013 à 08:52
-2
Utile
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.

Bonne journée tout le monde.
Commenter la réponse de Jojo092

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.