【问题标题】:How do get reference to a related parent object when selecting a list of child objects using entity framework使用实体框架选择子对象列表时如何获取对相关父对象的引用
【发布时间】:2009-09-17 11:28:47
【问题描述】:

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

即我有一个 Project 对象和 Timesheet 对象

项目
身份证
名称
...

时间表
项目编号
用户ID
日期
花费时间
...

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: c# entity-framework entity


    【解决方案1】:

    孩子总是和父母有关系。在您的情况下,它可能被称为“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
            };
    

    【讨论】:

    • 谢谢。因此,如果您使用存储库模式,您会将其投影到可以通过层传递的新实体中,还是只通过匿名类型?
    • 匿名类型很难返回。您的方法可能需要返回类似 IQueryable 因此对于存储库模式,在这种情况下,我建议返回一个 IQueryable,并为此目的创建 SomePOCO。
    猜你喜欢
    • 2020-04-14
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多