1

ODataサービスを3番目のバージョンに更新する必要があります。現在、NuGetリポジトリから新しいライブラリを変更し、DataServiceConfigurationでプロパティMaxProtocolVersionをV3に設定しただけです。
これでは不十分かもしれませんか?誰かが知っています、私のアプリケーションですべてのフィルターをサポートするために私は正確に何をしなければなりませんか?

次のようにリクエストを送信しようとすると:http:
//expamle.com/OData.svc/Contacts?$ filter = Phones / any(p:p / Number eq '111-222-333-11')

この例外をスローする私のアプリケーション:

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
    <code>4</code>
    <message xml:lang="" />
        <innererror>
            <message>No property 'any' exists in type 'City' at position 5.</message>
            <type>System.Data.Services.DataServiceException</type>
        <stacktrace>
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseMemberAccess(Expression instance)
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParsePrimary()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseUnary()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseMultiplicative()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseAdditive()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseComparison()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseLogicalAnd()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseLogicalOr()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseExpression()
            at System.Data.Services.Parsing.RequestQueryParser.ExpressionParser.ParseWhere()
            at System.Data.Services.Parsing.RequestQueryParser.ParseLambdaForWhere(IDataService service, RequestDescription requestDescription, Type queryElementType, String expression)
            at System.Data.Services.Parsing.RequestQueryParser.Where(IDataService service, RequestDescription requestDescription, Expression source, String predicate)
            at System.Data.Services.RequestQueryProcessor.ProcessFilter() at System.Data.Services.RequestQueryProcessor.ProcessQuery()
            at System.Data.Services.RequestQueryProcessor.ProcessQuery(IDataService service, RequestDescription description)
            at System.Data.Services.RequestUriProcessor.ProcessRequestUri(Uri absoluteRequestUri, IDataService service, Boolean internalQuery)
            at System.Data.Services.DataService`1.ProcessIncomingRequestUri()
            at System.Data.Services.DataService`1.HandleRequest()
        </stacktrace>
    </innererror>
</error>
4

3 に答える 3

1

DataServiceBehaviorですべてのサポートが有効になっていることを確認しましたか? http://msdn.microsoft.com/en-us/library/system.data.services.dataservicebehavior.acceptanyallrequests(v=vs.103).aspx

于 2012-08-17T17:22:45.190 に答える
0

v3をサポートするには、WCFデータサービスを5.0に更新する必要がある可能性があります。ここからダウンロードできます。

于 2012-08-17T15:30:23.537 に答える
0

Cityはシングルトン(コレクションではない)のようです。この場合、Cityは必要ありません。このようなものは、問題なく機能します。

すなわちhttp://example.com/OData.svc/Contacts?$filter=City/Name eq 'New York'

Any / Allは、$filterで参照されるコレクションにのみ適用されます。

于 2012-08-17T16:05:45.047 に答える