간단히 말해서 MS Odata 서버 측 구현은 이 아니며은 statefull이며 REST 아키텍처로 간주 될 수 있습니다.
우리는 당신이 요청 정보를 페이징 제공 자바 스크립트 클라이언트
에 렌더링 된 페이지 번호를 유지하기 위해 stasteful 메커니즘을 사용하도록 강요 될 것이다. 예를 들어, 2 페이지의 10 개 항목 클라이언트/호출자가 페이징을 지정합니다 볼 수 있듯이 서버가 상태를 추적 할 필요가 없다, 상위 10를 타고 10
odata-url/?$count=true&$top=10&$skip=10
을 건너 뛸 것을 경우 원 클라이언트의
또한 추가하면 $count=true
은 결과 집합에 포함 된 전달 된 필터를 기반으로 총 레코드 수를 반환합니다 (위 예제에서는 필터 없음). 이렇게하면 클라이언트가있는 페이지 수를 계산할 수 있습니다.
프레임 워크는 또한
사실이 아니다 ... 모든 데이터베이스가 직접 뷰 모델로 노출 될 것으로 기대하고있다. 귀하의 유형이 T
인 IQueryable<T>
을 반환 할 수 있습니다. T
은 EF 모델 일 필요는 없습니다. 예를 들어 DbContext
에서 다음을 반환하는 것은 허용됩니다.
public IQueryable<SomeEntity> Get() {
return dbContext.SomeEntities
.Where(x => optionalPreFiltereExpression)
.Select(x => new SomeDTO(){
Prop1 = x.Prop1,
Collection1 = x.CollectionOfInterest,
// etc
});
}
이 지점을 더 자세히 설명하기 위해 하드 코딩 된 개체 목록을 반환 할 수 있습니다 (제작시 그럴 가능성이 낮음).
public IQueryable<SomeEntity> Get() {
return new List<SomeDTO>(){
new SomeDTO(){
Prop1 = 5,
Prop2 = "Hi there"
// etc},
new SomeDTO(){
Prop1 = 6,
Prop2 = "Goodbye"
// etc}
}).AsQueryable();
}
는 하나로, OData에 대한 모든 옵션에 대한 많은 자료가 있습니다.여기에 모든 것을 포함시키지 않을 것입니다. 그렇지 않으면 두 번째 문서 세트를 만들 수도 있습니다.
https://stackoverflow.com/questions/2458407/difference-between-odata-and-rest-web-services –
잠깐, 클라이언트가 보낸 요청의 일부분을 페이징하지 않았습니까? 제목을 제외하고 이것은 귀하의 의견에 대한 일련의 진술처럼 보입니다. 정말로 질문이 있습니까? – Icepickle
@DavidTansey 감사합니다 답변은 2010 년으로 거슬러 올라갑니다. – Abhijeet