2016-04-08 67 views
1

我在C#類中封裝了對DocDB集合的訪問,並且在映射更高級的查詢時遇到了一些麻煩。當嘗試使用查詢瀏覽器調試,我注意到在JSON一些差異返回:來自DocDb的查詢結果格式的差異

select * from collection 

將返回

[{ "id" : "1", "names" : [ {"name" : "first"}, {"name" : "second"}]}] 

select c from collection c 

將返回

[{ "c" : { "id" : "1", "names" : [ {"name" : "first"}, {"name" : "second"}]}}] 

請不要冰如何將結果嵌套在「c」屬性下面!

當我需要創建使用named選擇並使c#庫映射結果返回到某個類型的查詢時,這種區別似乎會導致問題。這樣的查詢的示例是

select c from collection c join n in c.names WHERE n.name = "first" 

此查詢必須使用用於選擇的「C」(*是不允許的),因此內部映射返回結果的正確數量,但每個返回的項沒有被映射(可能是因爲它期望最高級別的json屬性,而不是在「c」屬性下)。

有沒有人知道我可以如何獲得DocumentQuery C#API(從nuget版本1.5.3)來理解映射的結果嵌套在命名結果屬性下?

回答

2

在閱讀SELECT clause之後,我發現VALUE關鍵字剛剛返回使得C#驅動程序再次開心的json。

所以我的查詢應該結束了閱讀

select value c from collection c join n in c.names WHERE n.name = "first"