Не удается применить $ select при использовании ODataQueryOptions - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь реализовать запросы к Sql Server через EF Core и OData (7.1.0).

Метод действия выглядит следующим образом:

[HttpGet]
public IEnumerable<UserInfoDto> Get(ODataQueryOptions ops)
{
     return this.service.GetUserInfos(ops);
}

Сервисный код:

public List<UserInfoDto> GetUserInfos(ODataQueryOptions ops)
{
    using (var context = new EFContext())
    {
        var query = context.Users.Join(context.Customers, x => x.CustomerId, y => y.Id, (x, y) => new UserInfoDto
        {
            Id = x.Id,
            Name = x.Name,
            Age = x.Age,
            CustomerId = x.CustomerId,
            CustomerTitle = y.Title,
            CustomerDescription = y.Description
        });

        var result = ops.ApplyTo(query).Cast<UserInfoDto>().ToList();
        return result;
    }
}

Запуск Configute метод:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
     app.UseMvc(b => 
     {
         b.Count().Filter().OrderBy().Select().MaxTop(null);
         b.EnableDependencyInjection();
     });
}

Однако, когда у меня в запросе $select (например, https://localhost:5001/api/userinfos?$select=id), вместо прогнозируемого результата, я получаю ошибку:

InvalidOperationException: Оператор приведения не определен между типами 'Microsoft.AspNet.OData.Query.Expressions.SelectExpandBinder + SelectSome`1 [Oda taApp.UserInfoDto]' и 'OdataApp.UserInfoDto'.

Что мне не хватает?Любая помощь приветствуется.

...