如何在小写驼峰情况下使用ODataQueryOpions?

我正在使用最新的Microsoft.AspNetCore.OData(7.0.0-beta2)。我正在尝试使用ODataQueryOptions <>从具有驼峰式案例属性名称的OData查询中获取OData参数。

我使用builder.EnableLowerCamelCase(); Pascal案例属性名称调用控制器端点时,一切都工作正常。例如:

URL:/myentities?$orderby=**Id** 控制器动作:public async Task<IEnumerable<MyEntity>> Get(ODataQueryOptions<MyEntity> options)

但是,一旦我使用驼峰式案例名称(/myentities?$orderby=**id**),OData就会抛出一个验证异常:

ODataException:在类型'MyNamespace.MyEntity'上找不到名为'id'的属性。Microsoft.OData.UriParser.EndPathBinder.GeneratePropertyAccessQueryForOpenType(EndPathToken endPathToken,SingleValueNode parentNode)Microsoft.OData.UriParser.EndPathBinder.BindEndPath(EndPathToken endPathToken)Microsoft.OData.UriParser.MetadataBinder.Bind(QueryToken)Microsoft.OData.UriParinder ProcessSingleOrderBy(BindingState状态,OrderByClause thenBy,OrderByToken orderByToken)Microsoft.OData.UriParser.OrderByBinder.BindOrderBy(BindingState状态,IEnumerable orderByTokens)Microsoft.OData.UriParser.ODataQueryOptionParser.ParseOrderByI数据配置(string) UriParser.ODataQueryOptionParser。

我了解这builder.EnableLowerCamelCase();只是在序列化OData实体“响应”时使用Camel大小写,但是如何使用Camel大小写名称和ODataQueryOptions <>使用asp.net核心正确创建OData API?我是否必须实现自定义活页夹,或者有本地方法吗?

我在这里发现了一个可能与我的问题有关的问题:https : //github.com/OData/WebApi/issues/889

有没有人设法做到这一点而没有任何黑客?


慕少森
浏览 204回答 1
1回答

哆啦的时光机

使用最新的OData软件包(7 beta4或最终版本),一切都可以正常工作,而无需任何其他设置。我发布这个问题时,应该认为我的EDM OData模型应该有旧的OData软件包或错误的设置...
打开App,查看更多内容
随时随地看视频慕课网APP