Я получаю данные с помощью синтаксиса OData: http://server.com/api/users?$ пропустить=20&$вверх=10
Я пытаюсь добавить индекс к каждому извлеченному объекту в моем контроллере веб-API. Каждый раз, когда я получаю следующую ошибку:
LINQ to Entities не распознает метод System.Linq.IQueryable
1[WebPortal.Models.UserDto] Select[UserInDatabase,UserDto](System.Linq.IQueryable
1[DataContext.UserInDatabase], System.Linq.Expressions.Expression1[System.Func
3[DataContext.Media,System.Int32,WebPortal.Models.UserDto]]) и этот метод не может быть преобразовано в выражение хранилища.","ExceptionType":"System.NotSupportedException"
Насколько я понимаю, я не мог использовать селектор Select(u, index)=> при работе с контекстом Entity Framework (отлично работает для коллекции в памяти). К сожалению, я использую его для демонстрации своей коллекции через OData + QueryableAttribute:
public class UsersController : ApiController
{
[Queryable]
public IQueryable<UserDto> Get()
{
return _repository.Users
.Select((u, i) => new UserDto
{
Index = i,
Name = u.Name,
Age = u.Age
})
.AsQueryable();
}
}
Как я могу изменить процесс выборки, чтобы продолжать использовать синтаксис OData и иметь возможность возвращать сущности с индексом запрашивающей стороне?
мои сущности:
public class UserInDatabase
{
public string Name { get; set; }
public int Age { get; set; }
}
public class UserDto
{
public int Index { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
ТИА