Asp.net web api 在应用查询之后和返回数据之前,是否有方法更改odata的结果?
我有一个WebAPIAsp.net web api 在应用查询之后和返回数据之前,是否有方法更改odata的结果?,asp.net-web-api,odata,Asp.net Web Api,Odata,我有一个WebAPIOData控制器,在应用查询之后和返回数据之前,我需要执行一些操作。在EnableQuery中,我无法使用扩展方法来执行此操作 事实上,我需要在数据返回到客户端之前删除一些记录。此操作无法通过URI/Query/Filter完成 更新 请参阅下面的代码。实际筛选器应用于第一个ApplyQuery的返回值。如果我在其中执行筛选器,uri筛选器将被忽略 我试图查看扩展是否存在的代码: public class EQueryAttribute : EnableQueryAt
OData
控制器,在应用查询之后和返回数据之前,我需要执行一些操作。在EnableQuery
中,我无法使用扩展方法来执行此操作
事实上,我需要在数据返回到客户端之前删除一些记录。此操作无法通过URI/Query/Filter完成
更新
请参阅下面的代码。实际筛选器应用于第一个ApplyQuery
的返回值。如果我在其中执行筛选器,uri筛选器将被忽略
我试图查看扩展是否存在的代码:
public class EQueryAttribute : EnableQueryAttribute
{
public override IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
{
var retval = base.ApplyQuery(queryable, queryOptions);
if (queryable.ElementType.Name == "ProductInfoDto")
{
var q = retval as IQueryable<ProductInfoDto>;
return new List<ProductInfoDto>() { new ProductInfoDto { PasName = "123" } }.AsQueryable();
}
return retval;
}
public override object ApplyQuery(object entity, ODataQueryOptions queryOptions)
{
return base.ApplyQuery(entity, queryOptions);
}
public override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
return base.OnActionExecutedAsync(actionExecutedContext, cancellationToken);
}
}
公共类equalyAttribute:EnableQueryAttribute
{
公共覆盖IQueryable ApplyQuery(IQueryable queryable、ODataQueryOptions queryOptions)
{
var retval=base.ApplyQuery(可查询,查询选项);
if(queryable.ElementType.Name==“ProductInfoDto”)
{
var q=返回为可查询的值;
返回new List(){new ProductInfoDto{PasName=“123”}}}。AsQueryable();
}
返回返回;
}
公共覆盖对象ApplyQuery(对象实体、ODataQueryOptions查询选项)
{
返回base.ApplyQuery(实体,查询选项);
}
OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext,CancellationToken CancellationToken)上的公共重写任务
{
返回base.OnActionExecutedAsync(actionExecutedContext,cancellationToken);
}
}
提供一些您尝试过的代码,您可以使用查询选项。@Aria请参阅更新plzSo您想删除一些特定记录吗?如果是,您可以在返回记录之前在Quaryable func中将其删除,或将筛选器添加到查询选项中。再次查看@Aria I更新代码提供一些您尝试过的代码,您可以使用查询选项。@Aria请参阅更新PLZ是否要删除某些特定记录?如果是,您可以在返回记录之前在Quaryable func中将其删除,或将筛选器添加到查询选项中。再次查看@Aria I更新代码