ASP.NET MVC 4 WebApi: OData-Abfragen manuell verarbeiten

Ich habe eine Web-Service erfolgt über die WebAPI zur Verfügung gestellt von ASP .NET MVC 4.
Ich weiß, dass die Schicht auf die WebAPI funktioniert automatisch verarbeitet OData-Abfragen (wie $filter, $top, $skip), aber was ist, wenn ich damit umgehen will die Filterung von mir?

Ich weiß nicht, schicken Sie einfach die Daten aus meiner Datenbank, aber ich habe noch eine Schicht, die fügt einige Eigenschaften hinzu, lässt einige Umbauten etc. Also die Abfrage ALLER meiner Daten umzuwandeln und dann wieder in die WebAPI Klasse für OData-Filterung ist nicht gerade gut genug. Es ist natürlich furchtbar langsam, und in der Regel eine beschissene Idee.

So ist es ein Weg, um propagieren die OData query-Parameter von meinem WebAPI Einstieg in die Funktionen, die ich aufrufen zu Holen und konvertieren der Daten?

Beispielsweise ein man /api/people?$skip=10&$top=10 nennen würde auf dem server:

public IQueryable<Person> get() {
    return PersonService.get(SomethingAboutCurrentRequest.CurrentOData);
}

Und in PersonService:

public IQueryable<Person> getPeople(var ODataQueries) {
    IQueryable<ServerSidePerson> serverPeople = from p in dbContext.ServerSidePerson select p;
    //Make the OData queries
    //Skip
    serverPeople = serverPeople.Skip(ODataQueries.Skip);
    //Take
    serverPeople = serverPeople.Take(ODataQueries.Take);
    //And so on
    //...

    //Then, convert them
    IQueryable<Person> people = Converter.convertPersonList(serverPeople);
    return people;
}

InformationsquelleAutor der Frage frapontillo | 2012-05-28

Schreibe einen Kommentar