gpt4 book ai didi

c# - odata 深层次扩展不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:19 24 4
gpt4 key购买 nike

我正在尝试对我的一个 odata 查询(3 级)执行嵌套展开,但无法返回展开后的对象。

这是我的类(class):

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; }
}

以下 odata 查询有效,并返回 Projects 及其 Managers 列表:

/Projects?$expand=Manager

然后我尝试了这个查询,它成功了:

/Forecasts?$expand=ProjectResource($expand=Project)

添加另一层展开:

/Forecasts?$expand=ProjectResource($expand=Project($expand=Manager))

我收到一条错误消息,提示我只能扩展 2 个级别。所以我将其添加到我的查询中并重试:

[EnableQuery(MaxExpansionDepth=0)]

我不再收到错误,但是每个 ProjectManager 不包括在内。知道我缺少什么吗?

最佳答案

我遇到了同样的问题。事实证明,在配置期间添加所有实体集允许 $expand 在 2 个级别后正常工作。像这样添加所有实体集:

builder.EntitySet<Item>("Items");
builder.EntitySet<Product>("Products");
builder.EntitySet<Model>("Models");
builder.EntitySet<Type>("Types");

我还将 [EnableQuery(MaxExpansionDepth=0)] 设置为 Controller 上的一个属性。

关于c# - odata 深层次扩展不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42724262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com