Je rencontre des problèmes lors de l'interrogation du modèle d'entité pour obtenir des informations supplémentaires.Entity Framework IQueryable
Mon DB a une table de programme avec une relation de un à plusieurs avec une table d'événements. Le modèle Entité génère très bien les relations, mais je n'arrive pas à comprendre comment interroger le modèle pour obtenir l'objet progam avec ses événements.
Je peux le faire:
var foo = from program in entities.ProgramSet
where program.StartDate > DateTime.now
orderby program.StartDate
select program;
Pas de problème là-bas. De ce que j'ai trouvé sur la page de Microsofts (formant des questions avec l'infrastructure d'entité): msdn.microsoft.com/en-us/library/bb896272.aspx, si je voulais obtenir les objets d'enfant, je fais juste ceci:
// Define a LINQ query with a path that returns
// orders and items for a contact.
var contacts = (from contact in context.Contact
.Include("SalesOrderHeader.SalesOrderDetail")
select contact).FirstOrDefault();
Cependant, il n'y a pas .Include ou Include que je peux trouver sur la requête.
Une suggestion? Je sais que je peux faire un foreach à travers les résultats, puis exécuter un .Events.Load() dessus, mais cela ne force pas le résultat IQueriable à exécuter le sql, au lieu de l'opter pour l'exécuter seulement quand un .ToList () etc est appelé?
Voici quelques exemples de code de mon projet:
public class ProgramRepository : CT.Models.IProgramRepository
{
CTEntities db = new CTEntities();
public IQueryable<Program> FindAllPrograms()
{
return db.ProgramSet;
}
public IQueryable<Program> FindUpcomingPrograms()
{
var programs = from program in FindAllPrograms()
where program.StartDate > DateTime.Now
orderby program.StartDate
select program;
return programs;
}
Avec les FindUpComingPrograms je voudrais avoir aussi les événements comprennent les données. Il existe une relation entre le modèle Programme et Événements. Le programme a une propriété List <
événements >
, que je voudrais remplir et retourner avec la méthode IQueryable.
Merci encore!
n'ont pas travaillé avec l'EF, mais l'appel FirstOrDefault() rendra la requête exécuter quand même. – CSharpAtl
Oui, il va, et je voulais éviter, l'échantillon avec FirstOrDefault() provenait du site Web de Microsoft. – Mike