none
MVVM - EF4 - ObjectContext - TabControl RRS feed

  • Question

  • Bonjour,

    voilà je ne sais pas trop comment m'en sortir donc je viens vers vous...

    J'ai une fenetre qui affiche un TabControl... Dans chaque TabItem j'affiche par les infos sur un clients ; les infos sont : 
     - Nom du client
     - Liste des projets (dans DataGrid).
     - Liste des contacts (dans DataGrid).

    Cette applications est multi-utilisateurs, j'ai donc un petit bouton "Rafraichir" pour mettre à jour le datagrid Projets ou Contacts.

    EN ce moment, lorsque je veux afficher un client, je créé le "CLientTabItemViewModel", qui va créer un ObjectContext puis je récupère les données sur le client que j'affiche.

    Maintenant je modifie les données d'un client (j'ajoute un projet par exemple), je fais donc :

    // -- dans mon viewmodel
    public void NewProject()
    {
        Projet projet = this._projetManager.CreateNewProject(_client);
        this.Projets.Add(projet);
        RaisePropertyChanged(Projets);
    }
    
    
    

    J'ai donc bien un nouveau projet dans ma DataGrid et dans mon context qui est à l'état "Added".

    Maintenant l'idée me vient de rafraichir la liste des "Contacts" (je n'ai aps encore fait "Enregistrer") mais je veux juste rafraichir cette liste... 

    J'a essayé de rappeler mon "this._clients.Projets.ToList()"... mais ca ne me recharge pas les données qu'il y a en base... et je si je recrée un nouveau context, comment dire à mon client (qui a été récupéré avec l'ancien context) et à mon nouveau projet (que je viens de créer) de prendre ce nouveau context...

    Merci de votre aide, je suis un peu perdu....

     

     

    vendredi 30 septembre 2011 13:50

Réponses

  • Bonjour,

    Gardez le même ObjectContext et faites :

     c._clients.Projets.Execute(MergeOption.OverwriteChanges).ToList();
    

    Cela va rafraichir vos entités déjà existantes et trackées par Entity Framework.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    vendredi 30 septembre 2011 15:42
    Modérateur

Toutes les réponses

  • Bonjour,

    Gardez le même ObjectContext et faites :

     c._clients.Projets.Execute(MergeOption.OverwriteChanges).ToList();
    

    Cela va rafraichir vos entités déjà existantes et trackées par Entity Framework.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    vendredi 30 septembre 2011 15:42
    Modérateur
  • Bonjour,

    Est-ce que vous avez testé la solution proposée ? Merci de partager avec nous les résultats,afin que d'autres personnes avec le même problème puissent profiter de cette solution.


    Cordialement, Pascal.

    Développeur Wpf/SilverLight/WinPhone7

    lundi 3 octobre 2011 19:02
    Modérateur
  • MErci, j'ai réussi grâce a votre aide.

     

     

    jeudi 6 octobre 2011 14:56