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é

StackOverflow https://stackoverflow.com/questions/1438265

  •  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?

Était-ce utile?

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
        };
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top