我正在尝试在一个简单的项目中使用Microsoft.AspNetCore.OData,v7.0.0.0-beta1。 我无法过滤,选择和使用顶部或跳过。
覆盖EnableQueryAttribute的ValidateQuery,我可以成功执行这些类型的操作,所以我相信库是错误的。 我找不到报告问题的正确渠道,有人可以帮忙吗?
可以在此处找到要重现的示例代码:https://github.com/norcino/AspNetCoreSamples/tree/master/SampleODataApp
答案 0 :(得分:2)
问题的解决方案是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。