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

Dotnet Discussion :

[Linq] Propriétés customs sur objets mappés


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut [Linq] Propriétés customs sur objets mappés
    Bonjour à tous,

    Imaginons le scénario suivant. Trois tables: Companies, Departments, Employees. Departments possède une FK dans Companies et Employees possède une FK dans Departments. Très simple.

    Je map ces trois tables en LINQ.

    Ensuite, dans une classe partielle Company, je souhaite implémenter une propriété custom, par ex. EmployeeCount. Le code permettant d'obtenir le nombre d'employé est très simple et cela fonctionne à merveille.

    Où est le problème donc? J'aimerais récupérer toutes mes compagnies triées sur cette propriété custom, à savoir leur nombre d'employés. Hors, LINQ est incapable de traduire le code écrit en requête SQL.

    Je compte donc sur la communauté pour m'aiguiller vers quelques pistes de réflexion sur comment implémenter mes propriétés customs.

    Entre temps, j'ai essayé plusieurs possibilités, comme utiliser une SPROC ou encore au lieu de retourner un int, retourner un Expression<Func<Company, int>> mais aucune ne me permet de facilement utiliser la propriété telle quelle dans un DataGrid par exemple et de la trier facilement via LINQ.

    Vos remarques et conseils sont les bienvenus!

  2. #2
    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 : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Et si tu effectues le trie localement (sur tes objets) ?
    Tu fais deux requêtes, la première qui récupère tes données (linq to sql) et la deuxième qui les trie suivant ta propriété (linq to object).
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Merci pour cette réponse. Effectivement, c'est une possibilité, mais j'aimerais le faire côté serveur pour plusieurs raisons: la première c'est la performance. Ensuite, je n'ai pas envie de fetcher toutes ma table pour réaliser mon tri car, je ne l'ai pas mentionné dans le cas nominal pour le simplifier, mais le but est d'utiliser ce tri au sein d'un gridview. Et la dernière raison est que je met au point une méthode globale avec un controller d'accès aux données générique.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    pourquoi tu fais pas simplement company.Employees.Count ? ça normalement LINQ saura le convertir en SQL...

  5. #5
    Membre émérite Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Par défaut
    Parce que je n'ai pas de lien direct entre Company et Employee, y'a Department entre les deux.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Dans ce cas tu peux faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    company.Departements.SelectMany(d => d.Employees).Count()

Discussions similaires

  1. [HQL] Condition sur objet mappé dans une requête
    Par Florent06 dans le forum Hibernate
    Réponses: 2
    Dernier message: 02/05/2012, 14h06
  2. Fonction MAX sur les propriétés d'un objet
    Par mleddet dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/09/2009, 15h34
  3. Réponses: 0
    Dernier message: 10/09/2009, 10h49
  4. [VB.NET 2005] Propriété opacity sur un objet
    Par ricil78 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/04/2007, 11h11
  5. Réponses: 9
    Dernier message: 15/07/2006, 12h18

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