ara*_*zzy 3 c# odata asp.net-web-api
我正在尝试对我的 odata 查询之一(3 个级别)执行嵌套扩展,但无法返回扩展对象。
这是我的课程:
public class Project
{
public int ProjectId { get; set; }
public Manager Manager { get; set; }
public IEnumerable<ProjectResource> ProjectResources { get; set; }
}
public class ProjectResource
{
public int ProjectResourceId { get; set; }
public Employee Employee { get; set; }
public Project Project { get; set; }
public IEnumerable<Forecast> Forecasts { get; set; }
}
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public Manager Manager { get; set; }
public IEnumerable<ProjectResource> ProjectResources { get; set; }
}
public class Manager
{
public int ManagerId { get; set; }
public string Name { get; set; }
}
public class Forecast
{
public int ForecastId { get; set; }
public ProjectResource ProjectResource { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
以下 odata 查询有效,并返回一个Projects和它们的列表Managers:
/Projects?$expand=Manager
Run Code Online (Sandbox Code Playgroud)
然后我尝试了这个查询,它起作用了:
/Forecasts?$expand=ProjectResource($expand=Project)
Run Code Online (Sandbox Code Playgroud)
添加另一个级别的展开:
/Forecasts?$expand=ProjectResource($expand=Project($expand=Manager))
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,说我只能扩展 2 个级别。所以我将它添加到我的查询中并重试:
[EnableQuery(MaxExpansionDepth=0)]
Run Code Online (Sandbox Code Playgroud)
我不再收到错误消息,但不包括Managerfor each Project。知道我缺少什么吗?
小智 6
我正在努力解决同样的问题。事实证明,在配置期间添加所有实体集可以$expand在 2 个级别后正常工作。添加所有实体集,如下所示:
builder.EntitySet<Item>("Items");
builder.EntitySet<Product>("Products");
builder.EntitySet<Model>("Models");
builder.EntitySet<Type>("Types");
Run Code Online (Sandbox Code Playgroud)
我还将 [EnableQuery(MaxExpansionDepth=0)] 设置为控制器上的一个属性。
| 归档时间: |
|
| 查看次数: |
3478 次 |
| 最近记录: |