Update dans BDD via entity framework

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

Je vous remercie d'avance.

Cordialement.
A voir également:

2 réponses

cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
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 :
 l_UserToUpdate.nouveauNom = "V";
qui devrait donc modifier la colonne FK.
0
Jojo092 Messages postés 136 Date d'inscription samedi 24 septembre 2005 Statut Membre Dernière intervention 12 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.

Bonne journée tout le monde.
-2
Rejoignez-nous