2013-07-12 2 views
0

Dis mon objet graphique ressemble à:Comment inclure les propriétés de navigation avec impatience objets enfant

User 
=> Friends 
    => Clicks 
    => Urls 

Alors, quand je charge un utilisateur, je veux aussi eagirly charger les Amis de la propriété de navigation. Et je veux que l'objet ami charge impatiemment Clicks et ainsi de suite.

En utilisant le code que j'ai maintenant je ne peux le faire pour 1 niveau:

public User GetUserById(int userId) 
{ 
    return Get(x => x.Id == userId, includeProperties: "Friends").FirstOrDeafult(); 
} 

Est-ce possible?

Répondre

1

Apparemment, cette mise en œuvre du référentiel est le fractionnement juste le paramètre includeProperties par une virgule (includeProperties.Split(new char[] { ',' }) puis appelle

query = query.Include(includeProperty); 

pour chaque élément du tableau de résultats de la division. Pour votre exemple, vous pouvez utiliser un chemin en pointillés alors:

return Get(x => x.Id == userId, includeProperties: "Friends.Clicks.Urls") 
    .FirstOrDefault(); 

Il charge toutes les entités sur le chemin de la racine User entité à la dernière propriété de navigation Urls.

Si vous aviez une autre propriété de navigation User - dire Profile - et vous ne voulez charger avec impatience que aussi bien, il semble que cette syntaxe est prise en charge alors:

return Get(x => x.Id == userId, includeProperties: "Profile,Friends.Clicks.Urls") 
    .FirstOrDefault(); 
+0

Qu'en est-il régler la orderby pour l'enfant collections quand ils chargent? Est-ce possible? – loyalflow

+0

@ user1361315: Ce n'est pas directement possible, il n'y a que quelques solutions de contournement: http://stackoverflow.com/questions/7522784/ef-4-1-code-first-how-to-order-navigation-properties-when-using -include-et-ou – Slauma

Questions connexes