我想在一个简单的项目中使用Microsoft.AspNetCore.OData,v7.0.0.0-beta1。我无法过滤,选择,并使用顶部或跳过。
覆盖EnableQueryAttribute的ValidateQuery,我可以成功执行这些类型的操作,所以我相信库是错误的。我找不到报告问题的正确渠道,有人可以帮忙吗?
重现的示例代码可在此处获得:https://github.com/norcino/AspNetCoreSamples/tree/master/SampleODataApp
该问题的解决方案是MVC路由构建器的实际初始化。与.net框架版本一样,可以指定允许OData查询的操作。在下面的示例中,我将所有内容列入白名单,但您可以通过QueryOptionSetting的实例进行更精细的调整。
app.UseMvc(routeBuilder =>
{
routeBuilder
.Select()
.Expand()
.Filter()
.OrderBy(QueryOptionSetting.Allowed)
.MaxTop(2000)
.Count();
routeBuilder.EnableDependencyInjection();
});
请注意,属性[HttpGet, EnableQuery(AllowedOrderByProperties = "Id")]
将有效地强制执行属性中指定的唯一Id属性,但首先需要从配置中启用all。