组合all和any时,OData查询失败

时间:2014-02-15 20:13:38

标签: odata

我正在使用Microsoft的OData Api v3并试图成功获得以下查询:

Posts?$filter=(ReferredFrom/any(it: (it/ReferenceType/Description/Name eq 'Part')) and RefersTo/all(it: (it/ReferenceType/Description/Name ne 'Child')))

所以它基本上由两个与all链接的any / and个查询文件管理器组成:

ReferredFrom/any(it: (it/ReferenceType/Description/Name eq 'Part'))
RefersTo/all(it: (it/ReferenceType/Description/Name ne 'Child')))

虽然两个查询部分都可以自行运行,但如上所示,当我将它们组合起来时会出现错误。不幸的是,我得到了ArgumentNullException。你们有谁知道问题出在哪里?类似的查询与OData演示服务一起使用。

问候,bloxx

这是确切的答案:

{
  "odata.error":{
    "code":"","message":{
      "lang":"en-US","value":"Fehler"
    },"innererror":{
      "message":"Der Wert darf nicht NULL sein.\r\nParametername: parameter","type":"System.ArgumentNullException","stacktrace":"   bei System.Web.Http.ApiController.<InvokeActionWithExceptionFilters>d__1.MoveNext()\r\n--- Ende der Stapel\u00fcberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel\u00f6st wurde ---\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   bei System.Web.Http.Tracing.Tracers.HttpControllerTracer.<ExecuteAsyncCore>d__5.MoveNext()\r\n--- Ende der Stapel\u00fcberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel\u00f6st wurde ---\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   bei System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__21`1.MoveNext()\r\n--- Ende der Stapel\u00fcberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgel\u00f6st wurde ---\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n   bei System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()"
    }
  }
}

1 个答案:

答案 0 :(得分:0)

Posts?$filter=ReferredFrom/any(from: from/ReferenceType/Description/Name eq 'Part') and RefersTo/all(to: to/ReferenceType/Description/Name ne 'Child') 

http://www.odata.org/2012/05/odata-v3-demo-services/

作为建议,永远不要做同样的变量,但要更好地对每个变量进行分类:

而不是它 - 从,执行。在你的情况下。它更容易阅读