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

ADO.NET Discussion :

Problème requête select entity framework


Sujet :

ADO.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 15
    Points
    15
    Par défaut Problème requête select entity framework
    Bonjour,

    Je rencontre des difficultés pour effectuer une simple mise à jour de datagridview bindé sur une BDD Sql serveur.

    En fait je n'ai pas trouvé d'autre solution que d'utiliser un dispatcher qui effectue une requête select sur la base toute les X secondes.

    Le problème c'est que les lignes ajoutées dans la base apparaissent mais pas les modifications de ligne. Par exemple, si je modifie un champ bien précis sur une ligne il n'y a pas de répercutions sur mon datagrid.

    Je précise que les mécanismes de binding et Notifypropertychanged fonctionnent bien, je les ai testés.

    Côté vue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void dispatcherTimer_Tick(object sender, EventArgs e)
     {
                vm_mainwindow.Refreshdatagrid();
    }
    Côté VueModel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public void Refreshdatagrid()
            {
     
                var requete = from Kite in m_DbContext.Kite select Kite;
                //ObjectQuery<Kite> KiteQuery = m_DbContext.Kite;
                kites.Clear();
                foreach (var item in requete)
                {
                    kites.Add(item);
                }
            }
    Merci d'avance.

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Et tes mises à jour sont sauvés dans la DB?
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

  3. #3
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    De quel manière tu as affecté la source de donnée à ton datagridview ?
    Sur quel type de collection il est bindé ?
    De quel manière tu met à jour ta BDD, il peut y avoir un problème de cache, en gros tu met à jour ta base depuis un contexte, et ton datagrid est bindé sur la requête depuis un autre contexte.
    " Je préfère comprendre les gens qui ne me comprennent pas "

  4. #4
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 15
    Points
    15
    Par défaut
    La datagridview est bindé à la source de donnée sur un observable collection de type datamodel. A priori cela marche très bien car les modifications de la source entraine directement une MAJ sur le datagrid.

    Le problème vient plutôt de ma requête sql qui ne retourne pas toutes les modifs que je fais en BDD (marche seulement lorsqu'une ligne est ajoutée).
    Je sauvegarde effectivement mes modifs et cela fonctionne car certaines sont bien impactées sur le datagrid.

    A savoir que je modifie directement la BDD dans le management studio sql server pour faire mes essais. Peut être que le problème vient de là.
    De plus, je possède une version express de sql server...

    Et merci pour vos réponses

  5. #5
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Il y a des chances oui,
    EF conserve par défaut un cache si je ne dis pas de bêtise, et il ne peut détecter une modif en direct de la base sans passer par son context.

    Pour une ligne ajouté c'est compréhensible qu'il le voit, mais une maj, il doit prendre son cache par défaut.
    Pour ne pas utiliser le cache, je crois que c'est cette option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query.MergeOption = MergeOption.OverwriteChanges;
    " Je préfère comprendre les gens qui ne me comprennent pas "

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 15
    Points
    15
    Par défaut
    Cool ça fonctionne parfaitement merci !
    J'ai mis le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ObjectQuery<Kite> KiteQuery = m_DbContext.Kite;
                KiteQuery.MergeOption = MergeOption.OverwriteChanges;
                kites.Clear();
                foreach (var item in KiteQuery)
                {
                    kites.Add(item);
                }
    Par contre connaissez vous une méthode plus élégante pour impactée sur une vue les modifs dans une BDD ? Certains utilise les trigger UPDATE de la base je crois. Mais je ne sais pas ce qui est le plus courant.

  7. #7
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Malheureusement, mis à part en partageant le même contexte, l'application ne peut pas (à ma connaissance) détecter les changements fait par une application extérieure.
    " Je préfère comprendre les gens qui ne me comprennent pas "

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

Discussions similaires

  1. Problème requête SELECT condition WHERE string
    Par Glherbier dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/10/2010, 18h43
  2. SQL Problème requête SELECT
    Par Seth_75 dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2009, 15h02
  3. Problème requête SELECT ORACLE
    Par vizlebiz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2008, 16h20
  4. Problème Requête SELECT sur champ texte
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 5
    Dernier message: 02/10/2007, 21h19
  5. [SQL] Problème requête SELECT
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 04/07/2006, 23h54

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