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

Silverlight Discussion :

mvvm ria services, quelle méthode d'accès aux données


Sujet :

Silverlight

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut mvvm ria services, quelle méthode d'accès aux données
    Bonjour,

    J'accède à mes données à partir de ma requête "GetCountryTblQuery"

    Une première question, n'y a-t'il pas moyen de "caster" directement "lo.entities" sur mon ObservableCollection<CountryTbl> "_countries" en évitant donc le foreach ?

    Deuxième question, faut-il absolument passer par un loadOperation pour charger la liste des pays ?

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    using System;
    using JBase.ViewModel;
    using JBase.Web;
    using System.Collections.Generic;
    using System.Linq;
    using System.ServiceModel.DomainServices.Client;
    using System.Windows;
    using System.Collections.ObjectModel;
     
    public class TestViewModel : ViewModel
    {
     
        private J_Context _ctx;
        private ObservableCollection<CountryTbl> _countries ;
     
     
        public TestViewModel()
        {
            _ctx = new J_Context();
     
            _countries=new ObservableCollection<CountryTbl>();
            LoadOperation<CountryTbl> loadOp = this._ctx.Load(this._ctx.GetCountryTblQuery(), OnLoadCompleted, null);
     
     
            _ctx.Load(_ctx.GetCountryTblQuery());
     
        }
     
        private void OnLoadCompleted(LoadOperation<CountryTbl> lo)
        {
            if (lo.HasError)
            {
                MessageBox.Show(string.Format("Retrieving data failed: {0}", lo.Error.Message));
                lo.MarkErrorAsHandled();
            }
            else
            {
                foreach (CountryTbl c in  lo.Entities)
                {
                    _countries.Add( c);
                }
            }
        }
     
     
        public ObservableCollection<CountryTbl> Countries
        {
            get
            {
                return _countries;
            }
            set
            {
                if (_countries != value)
                {
                    _countries = value;
                    OnPropertyChanged("Countries");
                }
            }
        }
     
     
     
     
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Salut,


    Tu peux te faire une méthode d'extension, genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public static class IEnumerableUtils
        {
      public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> enumerableList)
            {
                if (enumerableList != null)
                {
                    return new ObservableCollection<T>(enumerableList);
                }
                return null;
            }
        }
    Après tu pourras l'utiliser partout sans te soucier du type...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var result = lo.Entities.ToObservableCollection()
    A+
    Christophe

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    C'est impressionant !

    ça fonctionne parfaitement !

    Pour l'instant, ma liste de pays fait 12 éléments donc je ne peux juger du gain de performance, mais je me dis que s'il y a 3000 enregistrements, ta méthode devrait apporter un gain significatif par rapport au Foreach, non ?

    Merci en tous cas pour ta réponse.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Côté perf, je sais pas trop, sachant qu'on appelle juste un concstructeur du framework (qui à priori devrait être le plus optimisé possible).
    Pour moi c'est surtout un confort au niveau de codage.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    D'accord pour le confort. Et en plus, ce qui est surtout pénalisant, c'est de ramener les données.

    Merci encore.

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

Discussions similaires

  1. [PHP 5.4] méthode d'acces aux données importées d'un CSV
    Par wimbish dans le forum Langage
    Réponses: 0
    Dernier message: 16/10/2014, 16h08
  2. Réponses: 11
    Dernier message: 07/11/2011, 16h57
  3. Quelle méthode d'accès aux données choisir ?
    Par alex_noox dans le forum Framework .NET
    Réponses: 1
    Dernier message: 10/04/2009, 15h48
  4. [c#] Méthode d'accès aux objets de ma form1
    Par SDuh dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/03/2006, 11h21

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