2016-04-08 40 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"