Kurz gesagt ist die MS Odata serverseitige Implementierung nicht Stateful und es kann als eine REST-Architektur betrachtet werden.
Wir würden stasteful Mechanismus anhalten Seitenzahlen zu erbringenden der JavaScript-Client
Sie bieten Paging Informationen in der Anfrage zu verwenden gezwungen. Zum Beispiel, wenn Sie wollte 10 Artikel von Seite 2 Sie die Top-10 nehmen und 10.
odata-url/?$count=true&$top=10&$skip=10
überspringen Wie Sie die Client/Anrufer gibt die Paging sehen können, gibt es keine Notwendigkeit für den Serverstatus verfolgen des Kunden.
Wenn Sie $count=true
hinzufügen, wird die Gesamtzahl der Datensätze basierend auf dem übergebenen Filter in der Ergebnismenge zurückgegeben (im obigen Beispiel gibt es keinen Filter). Dadurch kann der Client die Anzahl der vorhandenen Seiten berechnen.
Der Rahmen erwartet, dass alle die Datenbank direkt als Ansichtsmodell ausgesetzt werden ...
auch nicht wahr. Sie können IQueryable<T>
zurückgeben, wobei T
Ihr Typ ist. T
muss kein EF-Modell sein. Beispielsweise ist das Zurückgeben des folgenden von einer DbContext
akzeptabel.
public IQueryable<SomeEntity> Get() {
return dbContext.SomeEntities
.Where(x => optionalPreFiltereExpression)
.Select(x => new SomeDTO(){
Prop1 = x.Prop1,
Collection1 = x.CollectionOfInterest,
// etc
});
}
Um diesen Punkt illustrieren Sie auch eine hart codierte Liste von Objekten zurückkehren können, obwohl dies nicht sehr wahrscheinlich, dass in der Produktion sein könnte.
public IQueryable<SomeEntity> Get() {
return new List<SomeDTO>(){
new SomeDTO(){
Prop1 = 5,
Prop2 = "Hi there"
// etc},
new SomeDTO(){
Prop1 = 6,
Prop2 = "Goodbye"
// etc}
}).AsQueryable();
}
Es gibt viele Ressourcen auf allen Optionen für OData.Ich werde hier nicht alles einbeziehen, sonst könnte ich auch nur eine zweite Dokumentation erstellen.
https://stackoverflow.com/questions/2458407/difference-between-odata-and-rest-web-services –
Warten Sie, blättert ein Teil der Anfrage nicht durch den Klienten? Abgesehen von dem Titel scheint dies eine Reihe von Aussagen von Ihrer Seite zu sein, haben Sie wirklich eine Frage? – Icepickle
@DavidTansey, danke Die Antworten stammen aus dem Jahr 2010. – Abhijeet