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?
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
Vous devez vous connecter pour publier un commentaire.
OK; j'ai été en mesure d'obtenir ce travail, avec l'aide de quelques ici.
En gros, j'ai besoin de le faire:
À partir du lien ci-dessus, je ne peut déréférencer tblAnswers sur des éléments individuels de l'questions de la collection. Ici j'ai choisi de déréférencer tblAnswers sur le premier élément de la collection. En réalité, cette expression lambda est simplement utilisé pour produire le chemin de la propriété “tblQuestion.tblAnswers”, qui seront désireux de charge les réponses de toutes les questions.
Donc, même si on dirait que je suis le seul à en tirant sur les réponses à la première question, je suis réellement tirer toutes les réponses pour toutes les questions.
Include()
avec les expressions lambda, ajouterusing System.Data.Entity;
. (src)Ou:
using Microsoft.Data.Entity;
OriginalL'auteur Jim B