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

Accès aux données Discussion :

LINQ to SQL] Tracer les requêtes SQL d'Insert/Update/Delete


Sujet :

Accès aux données

  1. #1
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut LINQ to SQL] Tracer les requêtes SQL d'Insert/Update/Delete
    Salut

    J'utilise la méthode SubmitChanges pour faire des insertions/modifications/suppression dans mon DataContext.

    Ca marche nickel, sauf que j'ai besoin de stocker les requêtes SQL dans un fichier log à chaque opération de ce genre.

    Est-ce qu'il existe un moyen de récupérer la requête SQL générée par LINQ lors d'un Insert/Update/Delete ?

    J'ai jeté un coup d'oeil à la méthode GetChangeSet(), qui me retourne tous les objets métiers qui ont été modifiés, mais pas moyen de récupérer les requêtes SQL correspondantes !

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Utilise la propriété Log du dataContext: http://msdn.microsoft.com/fr-fr/library/bb386961.aspx
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    Merci je vais essayer ça !

  4. #4
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    Hello

    Bon effectivement ça marche nickel !

    En revanche il log tout (même les select), est-ce qu'il est possible de filtrer les écritures, et de logger uniquement les modifs en base ? (tout faut les select quoi)

  5. #5
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    C'est bon j'ai trouvé la solution : au lieu d'associer le log à un fichier au lancement de l'appli, il faut le faire juste avant chaque appel à SubmitChanges()
    Et pour s'éviter un copier coller à chaque SubmitChanges(), j'ai fait un override :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public override void SubmitChanges(ConflictMode failureMode)
    {
    using (StreamWriter writer = new StreamWriter(path, true))
    {
    Log = writer;
    base.SubmitChanges(failureMode);
    }
    Log = null;
    }
    Merci encore Badger

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Je ne comprends pas où tu fais ton override...
    Mais peut être qu'il y a plus simple pour moi : mon problème est le suivant : je voudrais récupérer le log de mon datacontext dans une variable de type string, pour pouvoir manipuler un peu la sortie afin de créer une requête qui pourra être exécutée plus tard.
    Dans le cas par exemple d'une perte de réseau, toutes les requêtes doivent être enregistrées pour pouvoir les rejouer une fois le réseau rétablit.
    Pour ça je voudrais les enregistrer dans une base de données en local (car ces requêtes serviront aussi de traçabilité des requêtes échouées).

    Pour résumer : je souhaite obtenir la chaine de sortie afin de la manipuler pour créer une requête SQL standard. (Pour ce qui est de l'enregistrement, une fois que j'aurais la chaine de sortie, je me débrouillerai )

    Merci d'avance pour votre aide !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/06/2014, 10h01
  2. Tracer les requêtes SQL
    Par pgerbaux dans le forum Outils
    Réponses: 4
    Dernier message: 24/08/2010, 10h36
  3. Réponses: 3
    Dernier message: 05/06/2008, 15h12
  4. tracer les requêtes SQL
    Par izioto dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/10/2005, 16h35

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