SubmitChanges

Résolu
cedric774 Messages postés 21 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 octobre 2012 - 7 août 2011 à 17:18
cedric774 Messages postés 21 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 octobre 2012 - 8 août 2011 à 16:21
Salut à tous

je suis actuellement occupé sur une mise à jour d'un enregistrement d'une base de données et j'ai un problème ...

Dans le 1er fichier

...
OptionJoueur newOpt = new OptionJoueur();
newOpt.NomJoueur = userName;
newOpt.NbrArmee = int.Parse(NbArmeeTxt.Text);
newOpt.NbrEnnemi = int.Parse(NbAdversaireTxt.Text);
newOpt.Couleur =  ComboboxCouleur.SelectedValue.ToString();

accesBD.editOption(newOpt);
...


Dans le 2ème fichier
public void editOption(OptionJoueur opt)
{
      try
      {
            Console.WriteLine("Debut option joueur");
               
            Console.WriteLine(opt.NomJoueur);
            Console.WriteLine(opt.NbrArmee);
            Console.WriteLine(opt.NbrEnnemi);
            Console.WriteLine(opt.Couleur);
                         
            OptionJoueur optionJoueur  (from o in db.OptionJoueur where o.NomJoueur opt.NomJoueur select o).Single();
             if (optionJoueur.NomJoueur != null)
             {
                  MessageBox.Show("le joueur existe");
                  optionJoueur.NbrArmee = (int)opt.NbrArmee;
                  optionJoueur.NbrEnnemi = (int)opt.NbrEnnemi;
                  optionJoueur.Couleur = opt.Couleur;
             }
             else
             {
                 MessageBox.Show("le joueur n'existe pas");
                 optionJoueur.NomJoueur = opt.NomJoueur;
                 optionJoueur.NbrArmee = opt.NbrArmee;
                 optionJoueur.NbrEnnemi = opt.NbrEnnemi;
                 optionJoueur.Couleur = opt.Couleur;
                 db.OptionJoueur.InsertOnSubmit(optionJoueur);
             }
             Console.WriteLine("Submit changes");
             db.SubmitChanges();
             Console.WriteLine("Joueur : " + optionJoueur.NomJoueur);
             Console.WriteLine("Nbr armee : " + optionJoueur.NbrArmee);
             Console.WriteLine("Nbr ennemi : " + optionJoueur.NbrEnnemi);
             Console.WriteLine("Couleur : " + optionJoueur.Couleur);
             Console.WriteLine("Fin option joueur");
                
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }            
        }


je récupère correctement l'enregistrement, toutes les sorties sont correctes et affichent les données attendues.
Par contre le "db.SubmitChanges();" ne modifient pas les valeurs de l'enregistrement ...
en base de données, la clé primaire est NomJoueur

exception :
'...t\assembly\GAC_MSIL\UIAutomationProvider\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll' chargé, chargement des symboles ignoré. Le module est optimisé et l'option du débogueur 'Uniquement mon code' est activée.
'...\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll' chargé


j'ai donc modifié l'option du débogueur, l'erreur disparait mais une autre apparait

Une exception de première chance de type 'System.ComponentModel.Win32Exception' s'est produite dans WindowsBase.dll


pouvez vous m'aider svp

1 réponse

cedric774 Messages postés 21 Date d'inscription vendredi 14 mars 2008 Statut Membre Dernière intervention 2 octobre 2012
8 août 2011 à 16:21
Solution trouvée,

en fait il ne suffit pas seulement de rajouter une clé primaire dans l'explorateur de données (Connexions de données) mais il faut aussi indiquer dans le .dbml, que le champ "Clé primaire" soit coché
3
Rejoignez-nous