Comment obtenir une référence à un objet parent associé lors de la sélection d'une liste d'objets enfants à l'aide du cadre d'entité
-
08-07-2019 - |
Question
Utilisation de EF, comment accéder aux valeurs d’une propriété parent lors de l’accès à une liste d’objets enfants.
i.e. J'ai un objet Project et un objet Timesheet
Projet
Id
Nom
...
Feuille de temps
ProjectId
UserId
Date
Temps dépensé
...
Je comprends comment récupérer un projet et ses feuilles de temps associées, mais que se passe-t-il si je souhaite récupérer toutes les feuilles de temps d'un utilisateur donné, puis simplement afficher le nom du projet avec chaque enregistrement de feuille de temps?
par exemple. NomProjet, Date, Dépense
La bonne pratique est-elle de créer une nouvelle entité pour façonner cet ensemble de résultats ou devrais-je simplement pouvoir renvoyer IEnumerable et accéder au champ .Project.Name.
C’est très facile d’utiliser Linq to Sql ou tout simplement ADO.net/SPs etc, mais ça me tue sur EF ..
Des idées?
La solution
Les enfants ont toujours une relation avec leurs parents. Dans votre cas, cela s'appelle probablement quelque chose comme "TimeSheet.Project". Vous pouvez donc écrire une requête du type:
var q = from u in Context.Users
where u.UserId == userId
from ts in u.TimeSheets
select new
{
ProjectName = ts.Project.Name,
Date = ts.Date,
TimeSpent = ts.TimeSpent
};