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 :

WPF et save context


Sujet :

Entity Framework

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut WPF et save context
    Re-bonjour à tous,

    voilà j'essaie de faire un truc qui me semblait simple (en tout cas sur le principe).
    J'ai un écran avec une listbox ou je sélectionne un client. Puis les informatons détaillés sur ce client s'affichent. De là je peux les modifier... (ça s'est fait...)

    Maintenant j'aimerai que quand j'appui sur le bouton "Enregistrer", il enregistre toutes les modifications en BDD et si j'appuie sur "annuler", il me réinitialise mes champs.

    j'ai parcouru le forum et j'ai trouvé ce post : http://www.developpez.net/forums/d99...-save-context/

    Cependant j'avoue ne pas comprendre la logique et surtout le fonctionnement... qu'est ce qui permet de "modifier" les objets mais de ne les enregistrer en base qu'au moment ou on appui sur enregistrer ? et surtout enregistrer tous les objets "impliqués".
    Par exemple, si à mon "client" j'ajoute une "conférence", alors un nouvel objet "conférence" est créé avec des infos précises. Cette objet ne sera enregistré dans la BDD que si le bouton "enregistrer" est sélectionné...

    J'utilise également EF4 dans une application WPF avec une base SQL Server Express...

    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Dans EF pour enregistrer les données tu fais appel à la méthode SaveContext de ton context. Pour annuler les modifications apportées aux entités déjà chargées tu fais appel à la méthode Refresh.

    Dans ton bouton Enregister, vu que tu as créé un objet Conference, il va falloir dire à EF de prendre en compte cette entité nouvellement créée pour cela il va falloir que tu l'ajoutes au contexte en faisant appel à la méthode Add (cette méthode est aussi proposée par la collection d'entités à laquelle appartient l'entité que tu veux insérer). Une fois que l'entité est prise en compte par le contexte, tu pourras faire appel à la méthode SaveContext pour valider les données.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Donc pas de "[DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]" ou quelque chose comme ça ?

    Et dans le cadre d'une suppression, par exemple je supprime une "conférence", tant que je n'ai pas sauvé, ça ne l'a que enlevé de la liste à l'écran mais si j'enregistre, il faut que ça supprime également d'autres objets (qui était en rapport avec cette conférence).

    Donc dans mon "ClientsBLL" qui s'occupe de la sauvegarde du client, je dois stocker toutes les "conférences" supprimées ? (mais que ceux qui était enregistré dans la BDD avant l'enregistrement)... comment procéder ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    On n'a jamais eu besoin de manipuler des attributs dans EF pour ajouter/supprimer/modifier des données.
    Tu as un problème de logique de suppression toi.
    Comment tu procèdes pour supprimer un objet du contexte ? j'aimerai bien savoir.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Justement ce fameux "[DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]" qui est dans le post que j'ai indiqué, je ne comprends pas à quoi il correspond... et je me demandais si j'avais raté quelque chose... mais tu me rassures en disant qu'on ne s'en sert pas, alors ça va

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    Par contre pour ce qui est des "ajout"/"suppression" annexes, du genre quand on ajoute ou supprime une "conférence", des autres objets sont créés/supprimées mais que si on appui sur "enregistrer", comment savoir ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par CaptainChoc Voir le message
    Par contre pour ce qui est des "ajout"/"suppression" annexes, du genre quand on ajoute ou supprime une "conférence", des autres objets sont créés/supprimées mais que si on appui sur "enregistrer", comment savoir ?
    C'est Normal vu que tu fais appel à la méthode SaveContext uniquement dans le code du bouton Enregistrer.
    Dernière modification par Invité ; 16/09/2011 à 16h41.

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    c'est justement ma question...

    Imaginons, j'ai mon objet Client (ID, nom, liste de conférence) :
    Un objet Conférence (Nom, Salle, liste de participant)

    Dans mon écran client, je crée une nouvelle conférence et ça l'ajoute bien dans l'écran (par exemple dans une LisBox)

    Maintenant, quand je crée une conférence, en réalité, ça va modifier plein d'autres objets (pour X ou Y raisons) mais que si j'enregistre, car sinon pas besoin de mettre à jour les autres objets.
    Donc pour résumer, des que je fais enregistrer, il me faudrait les "nouvelles" conférence, pour faire le traitement et seulement enregistrer en BDD ; un truc genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class ClientBLL
    {
    ..
    public void Save()
    {
        // récupéré toutes les NOUVELLES conférences
        // et fait les modifications
     
       DataContext.savechanges();
     
    }
    ..
    }
    Est ce complètement dénué de sens ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Donc au moment ou tu ajoutes un nouvel objet Conference dans ta ListBox tu l'ajoutes au contexte juste après et lors de la sauvegarde t'auras pas besoin de savoir qui sont les nouveaux objets ou pas.

Discussions similaires

  1. Comment créer un button SAVE AS en WPF?
    Par Moh1267 dans le forum C#
    Réponses: 0
    Dernier message: 08/05/2014, 14h23
  2. Réponses: 0
    Dernier message: 31/03/2014, 15h58
  3. Bouton "Save context" ?
    Par Colbix dans le forum Entity Framework
    Réponses: 19
    Dernier message: 29/10/2010, 14h21
  4. context menu en wpf
    Par liaram dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 15/02/2009, 11h35

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