2017-06-09 6 views
0

Azure関数とDocumentClientを使用してlinqクエリのシリアル化中に問題が発生しました。クエリは、私のPOCOのJsonProperty属性を使用しません。 LINQクエリは、{{"query":"SELECT * FROM root WHERE (root[\"objectType\"] = \"Campaign\") "}} LINQクエリとPOCOAzure関数CosmosDBクエリのシリアル化

var query = client.CreateDocumentQuery<Obj>(UriFactory.CreateDocumentCollectionUri("db", "col")) 
          .Where(d => d.ObjectType == "MyObj") 
          .AsEnumerable(); 
public class Obj 
{ 
    [Newtonsoft.Json.JsonProperty("objectType")] 
    public string ObjectType { get; set; } 
} 

の代わり{{"query":"SELECT * FROM root WHERE (root[\"ObjectType\"] = \"Campaign\") "}}を返し

アズール機能はアズール関数コア・ツールを起動コンパイル済み関数です。

私のdevのenvironementは次のとおりです。

  • VS 2017
  • 紺碧-機能コア・ツール(最新)
  • ネット4.6.1
  • DocumentDB SDK:1.14.0
  • Newtonsoft :10.0.0

iisexpressで実行すると、同じコードがうまく動作します。

ありがとうございました!

答えて

1

私はそれを再現することはできません。この機能を持つと

public static class HttpTriggerCSharp 
{ 
    [FunctionName("HttpTriggerCSharp")] 
    public static async Task<HttpResponseMessage> Run([HttpTrigger()] HttpRequestMessage req, TraceWriter log) 
    { 
     var client = new DocumentClient(new Uri("https://example.com"), string.Empty); 
     var query = client.CreateDocumentQuery<Obj>(UriFactory.CreateDocumentCollectionUri("db", "col")) 
         .Where(d => d.ObjectType == "MyObj") 
         .ToString(); 
     log.Info(query); 
     return req.CreateResponse(HttpStatusCode.OK, "OK"); 
    } 
} 

public class Obj 
{ 
    [Newtonsoft.Json.JsonProperty("objectType")] 
    public string ObjectType { get; set; } 
} 

が正しく表示されます{"query":"SELECT * FROM root WHERE (root[\"objectType\"] = \"MyObj\") "}です。

これを試すことはできますか?

これらは私が私のcsproj

<PackageReference Include="Microsoft.Azure.DocumentDB" Version="1.14.1" /> 
<PackageReference Include="Microsoft.Azure.WebJobs" Version="2.1.0-beta1" /> 
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.Http" Version="1.0.0-beta1" /> 
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.0-alpha5" /> 
で持っているすべてのパッケージです
関連する問題