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

C# Discussion :

Insertion d'une liste de donnée en une seule transaction


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut Insertion d'une liste de donnée en une seule transaction
    Bonjour,

    J'ai une classe Membre qui a une propriété Save qui permet de sauvegarder un membre dans la BD.

    En voici l'entête de la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static bool Save(Membre membre)
    Je souhaite sauvegarder une liste de membre. Pour cela, j'ai développé cette méthode :

    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 static bool Save(List<Membre> listMembre)
    {
    ...
    using(transaction)
    {
      ...
      foreach (Membre membre in listMembre)
        Save(membre);
     
      transaction.commit();
      ...
    }
    ...
    }
    Est-ce que de cette façon l'insertion dans la base de la liste des membres ce fait bien en une seule transaction ou pas ?

    Merci
    L'union fait la force.

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    C'est le principe oui. Par contre, si tu as une erreur il ne faut pas oublier d'annuler la transaction.

    En très gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    try
    {
        // Opération sur la BDD
        ...
        // Validation de la transaction
        transaction.Commit();
    }
    catch
    {
        // Annulation de la transaction
        transaction.Rollback();
    }
    Pas de questions techniques par MP

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    Le fait d'utiliser un
    on n'a plus besoin de faire un Rollback explicitement, non ?

    Donc, même si dans la méthode Save(Membre membre) j'ouvre une connexion et j'insère un membre dans la BD, le fait que la méthode Save(Membre membre) est appelée dans un bloc de using(transaction) dans Save(List<Membre> listMembre) tous les enregistrements déjà insérés seront supprimés en cas de problème d'insertion

    Vous confirmez ?
    L'union fait la force.

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Le using permet d'appeler automatiquement la méthode Dispose d'un objet, afin de libérer ses ressources, c'est tout.

    Donc le Rollback doit être fait
    Pas de questions techniques par MP

  5. #5
    Membre éclairé
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Points : 709
    Points
    709
    Par défaut
    salut
    Citation Envoyé par Axiome Voir le message
    Le fait d'utiliser un
    on n'a plus besoin de faire un Rollback explicitement, non ?
    Si par hazard le programme s'arrete et on n'arrive pas au COMMIT, toutes les insertions (toute commande de type DML) seronts annulés :
    If you type Google into Google, you Can break the internet" - The IT Crowd

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par StormimOn Voir le message
    Le using permet d'appeler automatiquement la méthode Dispose d'un objet, afin de libérer ses ressources, c'est tout.

    Donc le Rollback doit être fait
    Pas sûr ; à vérifier, mais il est probable qu'une transaction non Commitée est Rollbackée à sa Disposition (vive le franglais )
    ಠ_ಠ

  7. #7
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    C'est possible effectivement, mais je préfère l'appeler de manière explicite tout de même
    Pas de questions techniques par MP

Discussions similaires

  1. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 12h35
  2. Afficher le contenue d'une base de données dans une liste
    Par fdoncev dans le forum SharePoint
    Réponses: 3
    Dernier message: 16/07/2008, 18h00
  3. Charger une liste déroulante à partir d'une base de donnée
    Par mr_simon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 04/07/2007, 08h32
  4. [Liste]Affichage données dans une liste
    Par Zartak dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 22/05/2007, 17h02
  5. Réponses: 1
    Dernier message: 20/03/2007, 09h24

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