IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Linq Discussion :

[Linq To Sql] update Entité


Sujet :

Linq

  1. #1
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut [Linq To Sql] update Entité
    bonjour,
    je veux effectuer une mise à jour pour un objet Citerne tous entière pas seulement sur des attributs spécifiques .

    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
     
    public void update(Citerne citerne)
            {
     
     
     Citerne citerne_db = CiterneTable.Single(c => c.N_citerne == citerne.N_citerne);
     
     // je veux copier mon entité dans la table de la base de donnée
    // j ai  essayé comme ca, mais ca marche pas!
     
    citerne_db=citerne;
     
     cli.SubmitChanges();
     
            }
    et merci en avance

  2. #2
    Membre éprouvé
    Avatar de jgard
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Ton code assigne une référence et non des valeurs. Il faut que tu assignes les valeurs une à une à ton objet avant de sauvegarder.

  3. #3
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    Citation Envoyé par jgard Voir le message
    Ton code assigne une référence et non des valeurs. Il faut que tu assignes les valeurs une à une à ton objet avant de sauvegarder.
    je veux pas adapter cette solution c'est plus longs et n'est pas pratique parce que à mon cas j ai des tables avec des dizaines des champs est ce que il y a une solution plus facile ?!

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Ajouter citerne et supprimer citerne_db.

  5. #5
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    Ajouter citerne et supprimer citerne_db.
    j' ai déjà fais ca , mais il ajoute citerne à la fin de table ce n'est pas le cas parce qu'il faut qu'il ajoute citerne à la place de citerne_db, pour ca j ai attribué le n_citerne de citerne_db à citerne mais malgré tous ca, ca marche pas voila le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void update(Citerne citerne)
            {
     
     
     Citerne citerne_db = CiterneTable.Single(c => c.N_citerne == citerne.N_citerne);
       // il prend pas en considération cette ligne!
    citerne.n_citerne=citerne_db.n_citerne;
           cli.remove(citerne_db);
           cli.add(citerne);
     cli.SubmitChanges();
    }

  6. #6
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    C'est quoi n_citerne ?

    En quoi ça te gêne que l'enregistrement soit à la fin de ta table

  7. #7
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    C'est quoi n_citerne ?

    En quoi ça te gêne que l'enregistrement soit à la fin de ta table
    je vais illustrer tous ca par un exemple
    par exemple n_citerne :3 nom_citerne:gasoil.
    c'est je fais mise à jour à nom_citerne il faut que le n_citerne conserve sa valeur initial parce que l'utilisateur n'a pas le droit de changer le n_citerne c'est une clé primaire
    c'est claire maintenant ?

  8. #8
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu ne peux pas définir la clé primaire par toi même.

    Est-ce vraiment grave si la clé primaire de ta citerne change ?

    Si oui, alors tu n'a qu'à modifier les colonnes unes à unes.

  9. #9
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    le problème que ce code ca marche quand je ferme et j'ouvre l'application une autre fois.
    pourquoi ?!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void update(Citerne citerne)
            {
     
     
     Citerne citerne_db = CiterneTable.Single(c => c.N_citerne == citerne.N_citerne);
     
    citerne.n_citerne=citerne_db.n_citerne;
           cli.remove(citerne_db);
           cli.add(citerne);
     cli.SubmitChanges();
    }

  10. #10
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    enfin j ai trouvé la solution, il faut initialiser le datacontext et l'énumération chaque fois je fais une mise à jour dans la table voici le code complet

    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
     
    public void update(Citerne citerne)
            {
     
     
     Citerne citerne_db = CiterneTable.Single(c => c.N_citerne == citerne.N_citerne);
     
     // je veux copier mon entité dans la table de la base de donnée
    // j ai  essayé comme ca, mais ca marche pas!
     
    citerne_db=citerne;
     
     cli.SubmitChanges();
     
     cli = null;
     cli = new ConnexionlinqImpl();
     CiterneTable = null;
     CiterneTable = cli.GetTable<Citerne>();
     
      // cli c'est le datacontext 
     
    }

  11. #11
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    C'est assez moche comme solution.

    Essaye ça.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    using(cli = new ConnexionlinqImpl())
    {
       // ton code ici
    }

    Un context n'est pas supposé exister ad vitam aeternam. Normalement tu l'instancies tu l'utilises tu le dispose. Il ne faut pas le garder.

  12. #12
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    ca marche pas cette solution voici le code que j ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public void update(Citerne citerne)
            {
     
         using (cli = new ConnexionlinqImpl())
                    {  
     Citerne citerne_db = CiterneTable.Single(c => c.N_citerne == citerne.N_citerne);
     
     
    citerne_db=citerne;
     
     cli.SubmitChanges();
    }
    }
    et je fais du sorte que la classe ConnexionlinqImlp hérite de la classe IDisposable
    voici le code d'un exemple que j ai trouvé sur internet mais je sais pas ce que je vais ajouter dans la méthode dispose!

    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
    30
    31
    32
    33
     
    public class ConnexionlinqImpl : DataContext, IDisposable
     
        {
            private bool IsDisposed = false;
            private const string connexion_string=@"Data Source=kevin\SQLEXPRESS;Initial Catalog=gss;Integrated Security=True";
     
     public ConnexionlinqImpl() : base(connexion_string)
            {
             }
            public void Dispose()
            {
                Dispose(true);              
     
            }
            protected virtual void Dispose(bool disposedStatus)
            {
     
                if (!IsDisposed)
                {
     
                    IsDisposed = true;
     
                    // Released unmanaged Resources
     
                    if (disposedStatus)
                    {
     
                    }
                }
     
            }
        }

  13. #13
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Non non tu as rien à rajouter dans la définition de ta classe. Quand je dis dispose ça signifie pas appeler la méthode Dispose ça veut dire libérer l'objet.

    Dans ton bloc dispose rajoute le add et le remove.

  14. #14
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    j ai pas bien saisi ce que tu veux dire,est ce que tu peux illuster ce que tu as dit par un exemple claire qui se base sur le code que j ai déjà posté et merci

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2009
    Messages : 133
    Par défaut
    mitnick2006,
    Tu as marqué ton post résolu, mais quelle solution as-tu finalement adoptée ? Cela m'intéresse !
    nachtigal

  16. #16
    Membre confirmé Avatar de mitnick2006
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 163
    Par défaut
    Citation Envoyé par nachtigal Voir le message
    mitnick2006,
    Tu as marqué ton post résolu, mais quelle solution as-tu finalement adoptée ? Cela m'intéresse !
    nachtigal

    j ai adopté la solution dans le poste numéro #10 et ca marche parfaitement , mais je cherche encore une solution plus optimale et professionnelle

    voici la solution :
    http://www.developpez.net/forums/d80...e/#post4621759

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

Discussions similaires

  1. [Linq to SQL] Update d'un lot d'enregistrement
    Par dinbougre dans le forum Linq
    Réponses: 1
    Dernier message: 04/02/2010, 20h52
  2. LINQ to SQL] Tracer les requêtes SQL d'Insert/Update/Delete
    Par annalady dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/07/2009, 10h17
  3. [LINQ to SQL] Update qui marche pas
    Par zooffy dans le forum Accès aux données
    Réponses: 3
    Dernier message: 15/10/2008, 14h23
  4. [Linq to SQL] problème de transaction avec update
    Par jowsuket dans le forum Accès aux données
    Réponses: 2
    Dernier message: 25/09/2008, 10h15
  5. [Débat] Linq to SQL VS Framework Entites
    Par anthyme dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 12/08/2008, 22h57

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