2017-03-10 20 views
0

odataクエリ(3レベル)のいずれかでネストされた展開を実行しようとしていますが、返される展開されたオブジェクトを取得できません。odataディープレベルの展開が機能しない

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)] 

私はもうエラーを得ることはありませんが、各ProjectためManagerが含まれていません。私が何が欠けているかについてのアイデア?

答えて

0

私は同じ問題を抱えていました。設定中にすべてのエンティティセットを追加すると、$expandは2つのレベルの後で正常に動作することができます。

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

私も、コントローラ上の属性として[EnableQuery(MaxExpansionDepth = 0)]に設定します。 は、すべてのエンティティは次のように設定します。

関連する問題