Linq to entities - désireux de chargement à l'aide d'Inclure()

J'ai vraiment de base de la structure de la table:

dbo.tblCategory

dbo.tblQuestion (plusieurs pour une relation à tblCategory)

dbo.tblAnswer (plusieurs pour une relation à tblQuestion)

Donc, fondamentalement, ce que je suis en train de faire, c'est quand je charge une catégorie, je veux également en charge de toutes les Questions et toutes les Réponses.

Maintenant, j'ai été capable de le faire en utilisant le code suivant:

public tblCategory Retrieve(int id)
{
    using (var entities = Context)
    {
        var dto =
            (from t in entities.tblCategory.Include("tblQuestion")
                                           .Include("tblQuestion.tblAnswers")    
                 where t.Id == id
                 select t).FirstOrDefault();

            return entities.DetachObjectGraph(dto);
        }
    }
}

Cependant, je ne suis pas complètement séduit par cette; si la relation de changement des noms dans mon modèle, je ne vais pas à obtenir une erreur lors de la construction du projet. Idéalement, je voudrais utiliser une expression lambda; quelque chose comme ceci:

public tblCategory Retrieve(int id)
{
    using (var entities = Context)
    {
        var dto =
            (from t in entities.tblCategory.Include(t => t.tblQuestion)
             where t.Id == id
             select t).FirstOrDefault();

        return entities.DetachObjectGraph(dto);
    }
}

Maintenant, avec l'extrait ci-dessus; je suis coincé sur la façon de détailler les Réponses de la table. Aucune idée sur ce que je pourrais utiliser pour une expression lambda pour celui-ci?

Linq to entities .NET 4.0 prend en charge le chargement paresseux (activée par défaut) pour autant que je sais. Vous n'avez pas besoin de se soucier de cela, alors. =)
En supposant que nous sommes sur la 4.0. Nous sommes toujours à l'aide de 3,5 pour le moment =)
double possible de Entity Framework .Include() à compiler le temps de vérifier?

OriginalL'auteur Jim B | 2010-07-06