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 :

Tester s'il y a des modifications dans ma dataGridView


Sujet :

Linq

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Points : 68
    Points
    68
    Par défaut Tester s'il y a des modifications dans ma dataGridView
    Bonsoir,

    Je voudrais savoir si il y a une méthode qui permet de vérifier si mon dataGridView est modifié .

    En effet, je dois vérifier avant la fermeture de ma fenêtre si il y a des changement ...

    Avant de découvrir LINQ, j'ai travaillé avec les dataSets et donc pour récupérer les modifications je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mondataset.HasChanges() ) .....:
    Est ce qu'il y une méthode équivalente utilisé avec LINQ ?



    Merci d'avance

  2. #2
    Membre habitué
    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
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    Si tu utilises Entity Framework, tu peux utiliser la propriété ObjectStateManager de ton contexte et sa méthode GetObjectStateEntries.
    Cela te permettra de récupérer, s'il y en a, l'ensemble des entités en fonction de leur statut (Deleted, Inserted, Modified et Unchanged). Ce statut peut être passé en paramètre de la méthode. Tu pourras ainsi voir combien d'éléments ont été modifiés, voir leur valeur actuelle, leur ancienne valeur, ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par jgard Voir le message
    Bonjour,

    Si tu utilises Entity Framework, tu peux utiliser la propriété ObjectStateManager de ton contexte et sa méthode GetObjectStateEntries.
    Cela te permettra de récupérer, s'il y en a, l'ensemble des entités en fonction de leur statut (Deleted, Inserted, Modified et Unchanged). Ce statut peut être passé en paramètre de la méthode. Tu pourras ainsi voir combien d'éléments ont été modifiés, voir leur valeur actuelle, leur ancienne valeur, ...
    Bonsoir,
    Merci pour votre réponse

    Si je comprend bien, le linq ne permet pas de faire ça ! non?

    Est ce que le Entity Framework peut être utilisé en parallèle avec le LINQ ? car je veux pas re-dévélopper l'application à partir du zéro ..

    Si non, est - ce que c'est l'unique solution?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 205
    Points : 206
    Points
    206
    Par défaut
    Linq est une sorte de "sous langage", il ne "stock" donc rien en lui meme (il stock dans du xm;, entity, ...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Si je comprend bien, le linq ne permet pas de faire ça ! non?
    Difficile donc de repondre: oui si linq to entities, apres on ne sait pas du linq to "quoi" tu fais ;-)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par julien_iz Voir le message
    Linq est une sorte de "sous langage", il ne "stock" donc rien en lui meme (il stock dans du xm;, entity, ...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Si je comprend bien, le linq ne permet pas de faire ça ! non?
    Difficile donc de repondre: oui si linq to entities, apres on ne sait pas du linq to "quoi" tu fais ;-)
    Linq to SQL

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 205
    Points : 206
    Points
    206
    Par défaut
    Dans ce cas, il faudrait que ca se passe au niveau de la bdd je pense. Mais la je peux pas t'aider ;-)

  7. #7
    Membre habitué
    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
    Points : 140
    Points
    140
    Par défaut
    Pour la bdd, il faut créer un champ de type timestamp dans chaque table. Ce champ changera automatiquement de valeur dès qu'une modification sera faite sur un des autres champs. Cela te permet de limiter le nombre de triggers à un par table. Maintenant à toi de voir si tu veux effectivement passer par un trigger en bdd ou vérifier le changement de valeur de ce champ dans ton code.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 118
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par julien_iz Voir le message
    Dans ce cas, il faudrait que ca se passe au niveau de la bdd je pense. Mais la je peux pas t'aider ;-)


    Un grand merci pour votre intérêt!



    Citation Envoyé par jgard Voir le message
    Pour la bdd, il faut créer un champ de type timestamp dans chaque table. Ce champ changera automatiquement de valeur dès qu'une modification sera faite sur un des autres champs. Cela te permet de limiter le nombre de triggers à un par table. Maintenant à toi de voir si tu veux effectivement passer par un trigger en bdd ou vérifier le changement de valeur de ce champ dans ton code.
    Oui, excellente idée !
    Mais est ce que ça influe sur ma conception?
    par exemple, dans mon diagramme de classe, est ce que je met cet attribut ou bien laisse tomber?

  9. #9
    Membre habitué
    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
    Points : 140
    Points
    140
    Par défaut
    J'aurais tendance à dire qu'il faut le mettre dans la conception car même s'il n'est utilisé que pour cette gestion de mise à jour, il y a quand même du traitement à faire sur lui en base ou dans le code. Et de toute façon, plus la conception est complète, mieux c'est, il vaut toujours mieux avoir une doc trop complète que pas assez (enfin c'est mon avis ). Si tu as d'autres questions ou commentaires sur cette technique, n'hésite pas.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/06/2009, 11h18
  2. Réponses: 2
    Dernier message: 16/12/2008, 16h16
  3. enregistrer des modifications dans une requête
    Par Lenalyon dans le forum WinDev
    Réponses: 1
    Dernier message: 14/02/2007, 10h58
  4. Réponses: 4
    Dernier message: 06/10/2006, 15h24
  5. Réponses: 6
    Dernier message: 26/09/2005, 10h38

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