2016-07-13 5 views
1

でのUDFでUserDefinedFunctionProvider.Invokeを使用する方法:私は、クエリのWHERE句が、実行には、次のメッセージで<code>Microsoft.Azure.Documents.Linq.DocumentQueryException</code>をスローどこでそれを使用するDocumentDBでユーザー定義関数を作成しようとwhere句

型 'System.Object'の定数はサポートされていません。

次のコードは、説明した動作を示しています。私は何か間違っているのですか?

string udfName = "udfDemo"; 
UserDefinedFunction udfDemo = new UserDefinedFunction() 
{ 
    Id = udfName, 
    Body = @"function(a, b) { 
       return true; 
      }" 
}; 

UserDefinedFunction createdUdf = documentClient.UpsertUserDefinedFunctionAsync(documentCollectionUri, udfDemo).Result; 

int intParameter1 = 1; 

IQueryable<MyModel> query= documentClient 
    .CreateDocumentQuery<MyModel>(documentCollectionUri) 
    .Where(order => 
     (bool)UserDefinedFunctionProvider.Invoke(udfName, order.CancelationDetails, intParameter1)); 

var result = query.ToList(); 

答えて

2

私はConvert.ToString(intParameter1)Invoke呼び出しでintParameter1への参照を交換したときにエラーが消え'Microsoft.Azure.DocumentDB 1.5.0'

を使用することが起こったサンプルプロジェクトでこれをREPROすることができました。

(私はちょうどこの技術で自分自身を始めるよ、なぜ私は知らない)

私はその後Nuget 'Microsoft.Azure.DocumentDB.1.9.2'から入手可能な最新のパッケージを更新しようとしたし、あまりにもすぐに戻ってちょうどintParameter1を使用すると、その元に戻しますエラーなく動作します。

これはおそらく修正されているバグかもしれません。具体Release Notes 1.9.1状態

はLINQでユーザ 定義関数を使用する場合、異なる種類のパラメータを使用する能力を修正しました。

+0

あなたは正しいです、マーティン! Rajeshが言ったように、そのバグは修正されました。 Andrew Liuに郵便で連絡した後、DocumentDBチームはさらに調査を行い、Microsoft Azure DocumentDBクライアントライブラリ1.9.2でこのバグを修正しました。 –

0

はい、このバグは.NET SDK 1.9.2で修正されています。

ありがとうございます!

関連する問題