0

使用 EF 在访问子对象列表时如何访问父属性中的值。

即我有一个项目对象和时间表对象

项目
ID
名称
...

TimeSheet
ProjectId
UserId
Date
TimeSpent
...

我了解如何取回项目及其相关的时间表,但是如果我想取回给定用户的所有时间表,然后简单地在每个时间表记录中显示项目名称,该怎么办。

例如项目名称、日期、所用时间

最佳实践是创建一个新实体来塑造该结果集,还是我应该能够返回 IEnumerable 并访问 .Project.Name 字段。

使用 Linq to Sql 或直接使用 ADO.net/SPs 等非常容易,但它在 EF 上杀死了我。

有任何想法吗?

4

1 回答 1

0

孩子总是和父母有关系。在您的情况下,它可能被称为“TimeSheet.Project”。因此,您可以编写如下查询:

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
        };
于 2009-09-17T13:42:19.887 回答