"엔티티에 LINQ는 방법을 인식하지 않습니다"가 발생합니다 : http://server.com/api/users을 $ 내가 시도하고있다 = 10WebAPI 컨트롤러는 내가 중 하나로, OData의 구문을 사용하여 데이터를 가져 오는거야 오류
를 = 20 & $ 위로를 건너 내 Web API 컨트롤러에서 가져온 모든 엔티티에 색인을 추가하십시오. 나는 다음과 같은 오류를 받고 있어요 때마다 :
LINQ to Entities does not recognize the method '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]])' method, and this method cannot be translated into a store expression.","ExceptionType":"System.NotSupportedException"
내가 선택 (U, 인덱스)를 사용할 수없는 알고있는 것처럼 => 선택 엔티티 프레임 워크 컨텍스트와 작업하는 동안은 (메모리 컬렉션을 위해 잘 작동). 불행하게도, 난 중 하나로, 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; }
}
TIA
필터를 적용하기 전에 쿼리가 데이터베이스의 모든 데이터를 가져 오기 때문에 이러한 경우는 아닙니다. 거기에 수천 개의 행이 있습니다. 이것이 바로 페이지 매김을 소개하는 정확한 이유입니다. –
* AsEnumerable() 전에 페이지 매김/필터링 (Skip/Take) 코드 *를 수행하십시오. 색인은 건너 뛴 행 수를 가져와야합니다 (건너 뛴 건너 뛰기 수에 관계없이 0부터 시작합니다). –