Bla*_*art 7 odata asp.net-web-api
我有一个使用Entity Framework和Odata的ASP.NET Web API应用程序.
我想在使用GET时修改查询的结果...当前,在控制器中,您实际上只是将EntityFramework数据实体传递回Odata处理程序...
[EnableQuery]
public IQueryable<myEntity> GetLineItem()
{
return db.myEntities;
}
Run Code Online (Sandbox Code Playgroud)
通过简单地返回一个子集,可以很容易地将Odata传递给它的任何查询前置
return db.myEntity.Where(myEntity => myEntity.Name == "Bob")
Run Code Online (Sandbox Code Playgroud)
Odata会将$ filter querystring参数中的任何内容添加到此处传递的表达式中,并获得这些结果的子集.
但是,我想在查询执行后迭代结果,并将SQL结果解析为实体对象.
我已经尝试创建一个包装器来实现IQueryable接口并挂钩到GetEnumerator方法,并为IProvider提供相同的方法并挂钩到execute方法.Odata似乎没有使用其中任何一个.
有没有办法做到这一点?
您可以通过实施过滤器来实现.过滤器只是一个属性,可以应用于操作(控制器的方法),控制器(控制器的类)或整个应用程序的注册.
此过滤器应用于管道的某个步骤:有一个管道,从传入的HTTP请求到控制器操作,然后返回到响应,您可以在此管道的不同位置包含一个过滤器,以修改数据流通过这条管道.
您特别需要继承ActionFilterAttribute,并在OnActionExecuted执行控制器操作后执行后处理.
文档:
最后一个类是OnActuonExecuted方法的参数类型,并包含您可以修改的响应.
本文的第一部分包含对操作过滤器的说明: WEB API 2使用ACTIONFILTERATTRIBUTE,OVERRIDEACTIONFILTERSATTRIBUTE和IOC INJECTION
| 归档时间: |
|
| 查看次数: |
2350 次 |
| 最近记录: |