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

Framework .NET Discussion :

[Objets métier] Propriétés calculées à partir des données des objets enfants


Sujet :

Framework .NET

  1. #1
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut [Objets métier] Propriétés calculées à partir des données des objets enfants
    Mes "Item" (objets métiers) sont généralement regroupés dans des collections et un item peut posséder une ou plusieurs propriété (de type collection) contenant des items enfants. Pour filtrer une collection, j'ai parfois besoin de spécifier un critère qui ne porte pas directement sur les items de la collection mais sur des items enfants (une ou deux hiérarchie plus bas).

    Prenons un exemple : un item Contact possède une collection d'item Adresse. --> je veux tous les contacts ayant une adresse dans une Ville donnée.

    J'aimerais savoir comment vous procédez pour répondre à ce cas dans un environnement déconnecté (on travaille sur les données chargées dans les classes métier sans recharger ces données à chaque nouveau filtre) et sans utiliser des colonnes calculées de DataTable.

    Pour simplifier l'utilisation de filtres, je pense créer une classe qui hérite de celle de l'item parent, en lui ajoutant des propriétés spécifiques qui renvoient un booléen pour indiquer si des enfants correspondent aux critères du filtre ou pas (ou encore un Integer indiquant le total de ceux qui correspondent).

    Le problème est de savoir comment obtenir la valeur de cette propriété !
    • Le plus simple serait de boucler sur chaque item enfants dans le Get de la propriété. Mais si cette solution est facile à coder, est-elle la plus efficace à l'exécution ?
    • L'idéal ne serait-il pas que cette propriété soit mise à jour en temps réel à mesure que les données des items enfants sont modifiées ?
    Dans ce dernier cas je réfléchis encore à une bonne stratégie et souhaiterais connaître vos idées !

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    J'ai pensé à quelque chose, mais j'ai peur que ça fasse un peu trop usine à gaz :

    Dans l'item parent, pour chaque propriété enregistrant le résultat d'un filtre, j'instancie une classe "ChildFilter".
    Cette classe tiendrait à jour un compteur "FilterResult" du total des items enfants qui correspondent au filtre.
    Ainsi dans le Get ma propriété, je renverrai ChildFilter.FilterResult.

    Pour assurer la mise à jour du compteur, je passe l'instance de ChildFilter à chaque item enfant. Et c'est donc chaque item enfant qui devra mettre à jour le compteur lorsque ses données changent.

    Pour que chaque item enfant modifié puisse savoir si ses nouvelles données correspondent au filtre, je pense que la classe ChildFilter pourraient fournir un Delegate qui prend l'item enfant en paramètre et renvoie un boolléen.

    Avant d'essayer d'implémenter un truc pareil, j'aimerais bien avoir vos avis.

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Hum...en gros tu veux faire des select from where sur des listes d'objets.
    Hum, ça sent Linq tout ça

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Héhé, j'ai déjà jeté un oeil à Linq mais j'ai décidé de ne pas l'utiliser car pour l'instant côté base de donnée on ne peut cbiler que SQL SERVER.

    Dans mon cas précis Linq ne changerait pas grand chose je crois. Car avec Linq, ok j'aurais une syntaxe efficace pour faire des SELECT WHERE sur de l'objet. Mais la question de fond que je me pose, c'est pas comment faire ces SELECT.

    C'est plutôt de savoir si j'en fais un à chaque appel de la propriété exposant le résultat du filtre OU si la valeur de cette propriété est mise à jour dynamiquement. Tu vois le truc ?

Discussions similaires

  1. A propos des copies, clonages objets et propriétés
    Par manitas dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/07/2010, 19h14
  2. [QlikView] Calcul cumul au chargement des données
    Par tonton93 dans le forum QlikView
    Réponses: 3
    Dernier message: 23/03/2009, 13h49
  3. Réponses: 1
    Dernier message: 30/03/2008, 04h20
  4. Réponses: 1
    Dernier message: 09/05/2007, 23h10
  5. [MySQL] Utilisation des fonctions des récupérations des données
    Par Konrad Florczak dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2006, 15h17

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