1

在 OnStartProcessingRequest() 方法中拦截传入的 OData 获取请求时如何获取实体(表)名称?例如:我想从以下 oData URI 获取 MusicCollection 和 Genre 作为实体名称

http://dataserver.com/service.svc/MusicCollection[SomeSong]/Genre

4

1 回答 1

1

这是 OdataUriParser 的完美使用!正如我们所说,它处于积极的、增量的、开发中,过滤器和 orderby 解析器目前可用,随着我们完成开发,还会有更多。我们尚未发布将处理您的特定场景的解析器部分(它仍在积极开发中),但有一个实验版本(正式版本基于此),您可以同时使用。在此处查看 OData contrib 库:http: //nuget.org/packages/Microsoft.Data.OData.Contrib。具体来说,是这样的:

  Uri requestUri  = new Uri("http://dataserver.com/service.svc/MusicCollection(SomeSong)/Genre");
  Uri baseUri = new Uri("http://dataserver.com/service.svc/")
  SyntacticTree parsedUri = SyntacticTree.ParseUri(requestUri, baseUri);

生成的 SyntacticTree 会将您的 uri 分解为 QueryToken,只需遍历树即可找到您正在寻找的路径!

于 2013-03-01T18:23:48.523 回答