小编Bre*_*use的帖子

使用OData QueryableAttribute修改从ASP.NET Web API返回的响应内容

这是我的问题.我正在使用ASP.NET Web API 2.0和QueryableAttribute来利用一些OData过滤功能.

public class VideoController : ApiController
{
    [HttpGet]
    [Route("activevideos")]
    [Queryable]
    public IEnumerable<Video> GetActiveVideos(ODataQueryOptions<Video> options)
    {
        return new GetvContext().Videos.Where(c => c.IsActive);
    }        
}
Run Code Online (Sandbox Code Playgroud)

现在,我有一个我一直用来修改响应对象和包含实体的类.在我开始使用QueryableAttribute之前,这工作正常.在此之前,我从前一个方法而不是IEnumerable返回一个List.

public class TestMessageProcessHandler : MessageProcessingHandler
{
    protected override HttpResponseMessage ProcessResponse(
        HttpResponseMessage response, CancellationToken cancellationToken)
    {

        var content = ((ObjectContent)(response.Content)).Value;
        // Do something here with the content.  This used to be a List<Video> 
        // but now the object it is of type: 
        // System.Data.Entity.Infrastructure.DbQuery<System.Web.Http.OData.Query.Expressions.SelectExpandBinder.SelectSome<Content.Api.Video>>
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要能够从这个获取实体,我不知道如何从类型中获取:

System.Data.Entity.Infrastructure.DbQuery<System.Web.Http.OData.Query.Expressions.SelectExpandBinder.SelectSome<Content.Api.Video>>这样的东西List<Video>,我可以修改Video对象.

c# entity-framework odata asp.net-web-api

5
推荐指数
1
解决办法
3259
查看次数

标签 统计

asp.net-web-api ×1

c# ×1

entity-framework ×1

odata ×1