2016-07-13 5 views
1

Ich versuche, eine benutzerdefinierte Funktion in DocumentDB zu schaffen es in einem zu verwenden, wo Klausel aber die Ausführung der Abfrage ein Microsoft.Azure.Documents.Linq.DocumentQueryException mit der folgenden Meldung wirft:Wie UserDefinedFunctionProvider.Invoke mit udfs in einem verwenden, wo Klausel

Die Konstante vom Typ 'System.Object' wird nicht unterstützt.

Der folgende Code veranschaulicht das beschriebene Verhalten. Mache ich etwas falsch?

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(); 

Antwort

2

Ich konnte dies auf einem Beispielprojekt repro, die 'Microsoft.Azure.DocumentDB 1.5.0'

Der Fehler verschwand mit geschah, wenn ich den Verweis auf intParameter1 im Invoke Anruf mit Convert.ToString(intParameter1) ersetzt.

(ich weiß nicht, warum ich in dieser Technologie selbst bin nur erste Schritte)

Ich habe dann versucht von Nuget auf die neueste verfügbare die Pakete aktualisieren 'Microsoft.Azure.DocumentDB.1.9.2' und kehrte zurück nach nur intParameter1 mit und das auch jetzt funktioniert ohne Fehler.

Also vielleicht ein Fehler, der seither behoben wurde. Spezifisch Release Notes 1.9.1 Staaten

die Fähigkeit zur Fest Parameter unterschiedlicher Typen zu verwenden, wenn der Benutzer definierten Funktionen in LINQ verwenden.

+0

Sie haben Recht, Martin! Wie Rajesh sagte der Bug wurde behoben. Nachdem er Andrew Liu per Mail kontaktiert und ihn zu diesem SO-Post geleitet hatte, führte das DocumentDB-Team einige weitere Untersuchungen durch und behob diesen Fehler in Microsoft Azure DocumentDB Client Library 1.9.2. –

0

Ja, dieser Fehler wurde in .NET SDK 1.9.2 behoben, nachdem es hier gemeldet wurde.

Danke!