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

Entity Framework Discussion :

Verrouillage Enregistrment BDD


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bellak
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 325
    Par défaut Verrouillage Enregistrment BDD
    Salut a tous ,
    SVP je bosse sur une appli qui va tourné sous reseau et je cherche un moyen pour verrouiller un enregistrment au moment de la mise a jour pour qu'il n'y aura pas 2 MAJ en meme temps
    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
     
    var quer = (from q in db.ARTICLE
    where q.ID== "A"
    select q).FirstOrDefault();
    if (quer != null)
    {
             //Verrouillage
             if (quer.VALUE >= 1 )
             {
                   quer.VALUE -= 1;
     
                   db.SaveChanges();
             }
             //Deverrouillage
    }
    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 : 50
    Localisation : Belgique

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    En utilisant TransactionScope() ou alors avec un Timestamp.

  3. #3
    Membre éclairé Avatar de bellak
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 325
    Par défaut
    Salut EquinoxeDotNet ,
    merci pour la reponse mais j'ai un petit probleme , la methode que tu m'as proposé et d'apres les recherches bloque un bout de code mais ca ne verrou pas l'enregistrement de la BDD.
    y a t-il une methode pour verrouiller un enregistrement (je pose la question parceque j'ai un client WPF) ? , ou dois-je utiliser les sevices web pour que je puisse utiliser cette methode au niveau de serveur ?

    merci

  4. #4
    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 : 50
    Localisation : Belgique

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

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Faire un pessimistic lock depuis EF, je ne pense pas que ce soit possible, il faut passer par du SQL.
    Sinon tu devrais pouvoir t'en sortir avec TransactionScope()

    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
     
    using(TransactionScope scope = new TransactionScope())
         {
             //Verrouillage
     
              var quer = (from q in db.ARTICLE
                 where q.ID== "A" select q).FirstOrDefault();
     
              if (quer != null)
              {
                       if (quer.VALUE >= 1 )
                       {
                             quer.VALUE -= 1;
                             db.SaveChanges();
                       }       
               }
              scope.Complete();
              //Deverrouillage
         }
    Le verrouillage va se faire au moment du select. Si une autre transaction commence avant le Complete, elle sera en attente. Si tu es en client/serveur, tu peux faire des services WCF qui propagent la transaction.

  5. #5
    Membre éclairé Avatar de bellak
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 325
    Par défaut
    OK , donc je dois utiliser les services web
    merci

  6. #6
    Membre éclairé Avatar de bellak
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 325
    Par défaut
    Salut EquinoxeDotNet ,
    j'ai un petit probleme sur la solution que tu m'as proposé , supposant qu'on a plusieurs acces sur la meme table , donc je dois bloquer toute la table .
    y'a pas un moyen pour bloquer juste un enregistrement ?
    merci

Discussions similaires

  1. [MySQL] Affectation de date à enregistrement BDD
    Par geyser dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/01/2007, 15h21
  2. Connection à un enregistrement (BDD)
    Par elabbassi dans le forum Access
    Réponses: 8
    Dernier message: 22/12/2006, 19h38
  3. Réponses: 3
    Dernier message: 27/10/2006, 15h28
  4. créer bouton pour enregistrer BDD sur une page
    Par guimauve dans le forum Access
    Réponses: 3
    Dernier message: 11/07/2006, 11h01
  5. [VB6] Supprimer un enregistrement bdd access
    Par floran30 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/06/2006, 15h24

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