2011-10-13 7 views
1

WCFデータサービスを使用して他のシステムに公開するデータベースビューがあります。データベースとWCF Data Services間の中間層はEntity Framework 4.1に基づいて構築されています

orderbyのない単純なクエリを使用してビューをクエリすると、すべての結果が得られます。私はORDERBY演算子が含まれている場合、クエリは次のエラーメッセージ(UseVerboseErrorsがtrueに設定されている)で失敗します。

WCF Data Servicesがorderbyを含むクエリに応答しない

<?xml version="1.0" encoding="utf-8" standalone="yes" ?> 
- <error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    <code /> 
    <message xml:lang="de-DE">An error occurred while processing this request.</message> 
- <innererror> 
    <message>Object reference not set to an instance of an object.</message> 
    <type>System.NullReferenceException</type> 
    <stacktrace>at lambda_method(Closure , StatesView) at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count) at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count) at System.Linq.OrderedEnumerable`1.<GetEnumerator>d__0.MoveNext() at System.Linq.Enumerable.<TakeIterator>d__3a`1.MoveNext() at System.Data.Services.DataService`1.SerializeResponseBody(RequestDescription description, IDataService dataService) at System.Data.Services.DataService`1.HandleNonBatchRequest(RequestDescription description) at System.Data.Services.DataService`1.HandleRequest()</stacktrace> 
    </innererror> 
    </error> 

私が間違って何をしますか?ビューには、並べ替えに使用するこの列とは異なる列に定義されたデータサービスキーがあります。ここ

クエリ:

http://localhost:6000/MyView?$orderby=number desc 
+0

SetEntitySetPageSizeを設定すると、sortby演算子がなくてもクエリが失敗します。ビューに何か問題がありますか?ビューにはSortByコマンドが含まれていません... –

+1

これはリフレクションプロバイダを使用しており、MyViewエンティティセットはList 程度のものです。リストにnull要素が含まれていないことを確認してください。 –

+0

はい、そうです、並べ替えに使用されるはずのNULL値が列にいくつかありました。この値を除外すると、クエリが機能し始めました。再度、感謝します!私の質問に答えるためのいくつかのポイントを得るために、新しい回答を作成してください。 –

答えて

1

エンティティセットクエリルート(のIQueryableを返すプロパティ)によって返される列挙上記のコメントで述べたように、それにヌルの項目を含んではなりません。それがうまくいけば、上記の質問に表示されているものの1つが間違っています。

関連する問題