Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

SaveChanges() ne modifie pas les données [Débutant]


Sujet :

Entity Framework

  1. #1
    Candidat au Club
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur amateur
    Secteur : Service public

    Informations forums :
    Inscription : mars 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut SaveChanges() ne modifie pas les données
    Je me suis lancé le projet fou de transposer un programme que j’ai fait avec Access et VBA en C# et ce, afin d’avoir un but dans la progression de mon apprentissage de ce langage. Et là, je bute sur un problème avec Entity Framework (et SQL Server).

    J’ai monté mon projet en Database First. Je peux lire les données de la base sans problème avec EF. Par contre, la mise à jour ne se passe pas comme il faut. Seul le contexte est modifié lorsque je fais un SaveChanges() mais les données dans la base restent les mêmes, même après une actualisation de celle-ci.

    J’ai une table (entre autres) appelée TPara composée ainsi :
    - IDPara (clé primaire)
    - IDTitulaire (int32)
    - Autres non utilisés pour le moment
    IDTitulaire correspond à l’identifiant du titulaire sélectionné.

    Dans la classe TPara et dans un fichier différent de celui créé par EF, j’ai la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public partial class TPara
    {
        public static bool EnregistreTitulaireIdSelectionne(long nouvelId)
        {
            bool retour = false;
     
            try
            {
                using (monContext context = new monContext ())
                {
    		// var paras = (from p in context.TParas select p).First();
                    // paras.IDTitulaire = nouvelId;
     
                    var mesParas = context.TParas.Find(1);
                    mesParas.IDTitulaire = nouvelId;
                    context.SaveChanges();
                }
            }
            catch
            {
                string temp = "L'enregistrement du titulaire sélectionné a échoué !\n\n";
                temp = temp + "Message de TPara.EnregistreTitulaireIdSelectionne()";
                MessageBox.Show(temp, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
     
            return retour;
        }
    }
    J’ai volontairement laissé en commentaire (juste après le using) une deuxième méthode que j’ai testé et qui n’a pas donné de meilleurs résultats.

    Ce code ne lève aucune exception.

    J’ai testé avec « context.Entry(mesParas).State.ToString() » l’état de mon contexte à trois endroits différents : avant la modification de IDTitulaire, après sa modification et après le SaveChange(). J’ai bien respectivement « Unchanged », « Modified » puis « Unchanged ».

    En vérifiant directement dans ma table TPara la valeur de IDTitulaire, cette dernière n’a pas changée.

    Je vous remercie par avance de toute aide sur ce problème.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    février 2010
    Messages
    3 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : février 2010
    Messages : 3 552
    Points : 9 880
    Points
    9 880
    Billets dans le blog
    3
    Par défaut
    Premiere chose a verifier : est-ce que la connection string que tu utilises dans ton code pointe vers la base de donnees ou tu as regarde ?
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Candidat au Club
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur amateur
    Secteur : Service public

    Informations forums :
    Inscription : mars 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Oui. J'ai comparé l'adresse utilisée par EF et celle de la base dans mon explorateur de serveurs (dans ses propriétés) et c'est la même.

  4. #4
    Candidat au Club
    Homme Profil pro
    Programmeur amateur
    Inscrit en
    mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur amateur
    Secteur : Service public

    Informations forums :
    Inscription : mars 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Je refais deux fois mon projet à partir de 0 pour avoir toujours le même résultat. Il y a certainement quelque chose que je dois mal faire et que je reproduis à chaque tentative.

    A ce jour, je n'ai toujours pas trouvé la réponse à mon problème. Je l'ai donc contourné en prenant une autre approche avec la méthode Model First. Et là, ça marche !

    Donc on ne peut pas dire que le problème soit résolu mais je clos qu'en même la discussion.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/03/2010, 00h31
  2. ClientDataSet.Refresh ne rafraichit pas les données
    Par WebPac dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2007, 15h32
  3. pb de syntaxe XML ne reconnais pas les données ..
    Par lolodelp dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/06/2006, 12h24
  4. y'a pas les données quand je veux imprimer
    Par StyleXP dans le forum Bases de données
    Réponses: 38
    Dernier message: 25/03/2006, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo