OData для веб-API: как вы расширяете одну сущность?

Я прочитал обаэти статьи несколько раз, чтобы попытаться выяснить, как использовать$expand Опция запроса для одной сущности, но во всех отношениях, которые я пробовал, я просто не могу заставить ее работать. Все остальные параметры запроса работают и$expand также в настоящее время работает над результатами сбора.

модель: У сущностей игроков есть свойство навигации, называемое Stats, в котором каждый объект содержит статистику для этого игрока за данный год.

Я настроил OData таким образом:

config.EnableQuerySupport();

ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Player>("OPlayer");
modelBuilder.EntitySet<PlayerStatistics>("OPlayerStats");

Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute("ODataRoute", "odata", model);

Первоначально я настроил свой контроллер следующим образом:

public class OPlayerController : EntitySetController<Player, int>
{
    private readonly DatabaseContext _db = new DatabaseContext();

    protected override Player GetEntityByKey(int key)
    {
        return _db.Players.FirstOrDefault(p => p.PlayerId == key);
    }

    public override IQueryable<Player> Get()
    {
        return _db.Players.AsQueryable();
    }

    protected override void Dispose(bool disposing)
    {
        _db.Dispose();
        base.Dispose(disposing);
    }
}

С этой конфигурацией я могу сделать эти запросы:

/odata/OPlayer(600)/odata/OPlayer/odata/OPlayer?$expand=Stats

Но, видимо, нет (результат не расширен):

/odata/OPlayer(600)?$expand=Stats

В обеих статьях упоминается, что для его поддержки необходимо добавить метод (действие?) В свой контроллер, который выглядит следующим образом:

[Queryable]
public SingleResult<Player> GetPlayer(int id)
{
    return SingleResult.Create(_dbContext.Players.Where(c => c.ID == id);
}

Когда я добавляю это в мой контроллер, оба/odata/OPlayer(600) а также/odata/OPlayer(600)?$expand=Stats вернутьNo action was found on the controller 'OPlayer' that matches the request.

Может ли кто-нибудь дать разъяснения или дать указание, чтобы поддержать$expand на одной сущности?

Ответы на вопрос(1)

Ваш ответ на вопрос