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

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

项目
ID
姓名
...

时间表
项目编号
用户身份
日期
所花费的时间
...

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

例如项目名称、日期、花费时间

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

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

有任何想法吗?

有帮助吗?

解决方案

孩子总是和父母有关系。就您而言,它可能被称为“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
        };
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top