【问题标题】:DataServiceQuery Expanding Related ExpandsDataServiceQuery 展开 相关展开
【发布时间】:2014-05-12 07:53:27
【问题描述】:

假设一个Company 有多个Employees,而每个AttendanceRecords 又有多个AttendanceRecords。

使用DataServiceQuery我可以包括所有公司的所有员工:

 dataContext.Companies.Expand(c => c.Employees);

但是,如果我想同时包含所有员工出勤记录怎么办?

我不能这样做:

dataContext.Companies.Expand(c => c.Employees).Expand(ce => ce.AttendanceRecords);

因为在第二个Expand 中,我仍然只有公司属性可供我使用(因此ce 仍然指的是公司,而不是“CompaniesEmployees”。

同样,我不能这样做:

dataContext.Companies.Expand(c => c.Employees.Expand(e => e.AttendanceRecords));

因为 Expand 方法不适用于Employees。

如何在单个查询中返回公司、员工和考勤记录?

【问题讨论】:

  • @TolgaEvcimen 实体框架

标签: c# wcf-data-services


【解决方案1】:

你可能想试试这个:

var companies = dataContext.Execute<Company>(new Uri("http://service/Companies?$expand=Employees($expand=AttendanceRecords)")).ToList();

【讨论】:

  • OData v4 开始支持在另一个 $expand 中扩展实体。
  • 在这种情况下,我认为使用 Expand(string) 方法会更好,例如dataContext.Companies.Expand("Companies/Employees"),但我真的希望有一个使用 lambda 表达式来利用强类型的解决方案。
  • 据我所知,目前没有这种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-02
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多