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 :

Propriété de navigation


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Par défaut Propriété de navigation
    J'ai un objet entité DT avec la propriété de navigation Service.

    Le problème c'est que cette propriété de navigation ne semble pas être chargé et cela même si l'objet DT est chargé.

    Du coup mon accesseur Service_Libelle me retourne toujours une chaîne vide.

    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
     
    namespace TEST
    {
        public partial class DT
        {
            #region Attributs et accesseurs
            public string Service_Libelle
            {
                get
                {
                    if (this.Service != null)
                        return this.Service.nom;
                    return "";
                }
            }
            #endregion
    Comment puis-je charger cette propriété ?

    En vous remerciant par avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Vérifies bien que tu initialises ta propriété this.Service

  3. #3
    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
    Par défaut les propriétés de navigation ne sont pas chargées en même temps, pour des raisons de performance. Si tu veux les charger, il faut le préciser dans la requête Linq avec la méthode Include. En l'occurrence, au lieu de context.DT, il faut utiliser context.DT.Include("Service").

    Une autre option est d'activer le lazy-loading au niveau du contexte : dans ce cas la propriété est automatiquement chargée depuis la DB au moment où tu y accèdes. Ça semble "magique", mais il faut se méfier quand même... par exemple, si ta connexion à la DB est fermée après que tu aies chargé l'entité DT mais avant que Service soit chargée, tu auras une erreur en accédant à Service. Perso je préfère charger les associations explicitement avec Include, ça évite les surprises

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Par défaut
    Tout d'abord merci de votre aide.

    Donc concernant l’utilisation d’une propriété de navigation dans une requête de type LINQ, il est préférable de la charger via Include.

    Cependant, dans mon cas, je l’utilise via un composant EntityDatasource. Il faut donc que mes propriétés de navigation soient chargés via le mode lazy-loading.

    J'ai effectivement modifié la propriété LazyLoadingEnabled de l'objet contexte afin d'affecter la valeur False.

    Pour l'instant, mon problème est identique. Toutefois, cela m'ouvre de nombreuses pistes pour rechercher mon problème. Car une chose dont je suis certains c'est que le problème c'est bien moi et une mauvaise compréhension de l'Entity Framework.

    Je continue de chercher et je ne manquerai pas de faire part de ma solution...

  5. #5
    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
    Citation Envoyé par Sitting Bull Voir le message
    Cependant, dans mon cas, je l’utilise via un composant EntityDatasource.
    Il y a une propriété Include qui sert à la même chose

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2003
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2003
    Messages : 147
    Par défaut
    Oui je viens de trouver la propriété Include sur le composant EntityDataSource et cela marche très bien.
    Grand merci pour votre aide précieuse.

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

Discussions similaires

  1. propriétés de navigation dans GridView
    Par keryss dans le forum Entity Framework
    Réponses: 2
    Dernier message: 10/04/2011, 21h40
  2. Linq, Propriété de navigation et temps de réponse
    Par sephirostoy dans le forum Linq
    Réponses: 8
    Dernier message: 15/02/2011, 14h35
  3. Réponses: 5
    Dernier message: 08/10/2010, 15h34
  4. Propriété de navigation
    Par hech2007 dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 05/10/2010, 17h37
  5. [Linq to Sql] [C#] Propriété de navigation
    Par ClaudeBg dans le forum Accès aux données
    Réponses: 9
    Dernier message: 27/02/2009, 19h38

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