Сервер возвращает простой список объектов вместо конверта ODATA - PullRequest
0 голосов
/ 15 мая 2019

В моем приложении реализована конфигурация ODATA.Все выглядит хорошо, некоторые операторы ODATA, такие как Filter, Select, Top работают, но в результате получается просто список простых объектов, а не отформатированные оддаты.Вот почему некоторые операторы, такие как $ count, не работают.

Вот мой Startup класс

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(x => x.EnableEndpointRouting = false).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    services.AddOData();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    IEdmModel model = GetEdmModel(app.ApplicationServices);

    app.UseMvc(route => 
    {
        route.Expand().Select().Filter().OrderBy().MaxTop(null).Count();

        route.EnableDependencyInjection();
        route.MapODataServiceRoute("ODataRoute", "odata", model);
        route.MapRoute("default", "api/{controller}/{action}");
    });
}

private static IEdmModel GetEdmModel(IServiceProvider serviceProvider)
{
    var builder = new ODataConventionModelBuilder(serviceProvider);
    builder.EntitySet<Models.Customer>("Customers");

    return builder.GetEdmModel();
}

Вот мой метод действия в HomeController class

[EnableQuery]
public IQueryable GetList()
{
    MyContext db = new MyContext();
    return db.Customers;
}

Запрос к .../odata/Customers возвращает 404. Не найдено.

Запрос к .../api/Home/GetList?$top=2&$select=id,name&$count=true возвращает этот JSON:

[
    {
        "Id": 748885,
        "Name": "VALERİY ŞAMƏMMƏDOVİÇ ŞİRİNOV"
    },
    {
        "Id": 748886,
        "Name": "VAQİF ƏBÜLFƏT MƏMMƏDOV"
    }
]

Но ожидаемый результат:

{
  "@odata.context": "http://localhost:60071/odata/$metadata",
  "@odata.count": 123,
  "value": [
    {
        "Id": 748885,
        "Name": "VALERİY ŞAMƏMMƏDOVİÇ ŞİRİNOV"
    },
    {
        "Id": 748886,
        "Name": "VAQİF ƏBÜLFƏT MƏMMƏDOV"
    }
]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...