我有一个使用ASPMVC4提供的 WebAPI 创建的Web服务。我知道WebAPI工作在其上的层会自动处理OData查询(如$filter
、$top
、$skip
),但如果我想自己处理过滤怎么办?
I don't simply return data from my database,但我有另一个层,它添加了一些属性,进行了一些转换等。所以查询我的所有数据,转换它们,并将它们返回到WebAPI类以进行OData过滤还不够好。当然,它非常慢,而且通常是一个糟糕的想法。
那么,有没有一种方法可以将OData查询参数从WebAPI入口点传播到我调用以获取和转换数据的函数?
例如,GET to /api/people?$skip=10&$top=10
将在服务器上调用:
public IQueryable<Person> get() {
return PersonService.get(SomethingAboutCurrentRequest.CurrentOData);
}
在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;
}
https://stackoverflow.com/questions/10781309
复制相似问题