internal override IEnumerable <JObject> ExecuteQueryScript(JsonQuery jsonQuery)
        {
            jsonQuery.JsonServerCollectionName = this.Connection.jsonServerCollectionName;
            string         script            = jsonQuery.ToString(DatabaseType.JsonServer);
            List <JObject> results           = new List <JObject>();
            IDataReader    reader            = this.Connection.JsonServerClient.ExecuteReader(script);
            StringBuilder  jsonStringBuilder = new StringBuilder();

            while (reader.Read())
            {
                jsonStringBuilder.Clear();
                JObject job = new JObject();
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    if (reader.GetName(i) == "")
                    {
                        // case: SELECT * ==> SELECT Doc(xxx), without `AS`.
                        Debug.Assert(reader.FieldCount == 1, "More than one unnamed column is unparseable");
                        job = JObject.Parse(reader.GetString(i)); // must be an object? Needs double check.
                    }
                    else
                    {
//                        string qqq = reader.GetName(i);
//                        string ppp = reader.GetString(i);
                        job.Add(new JProperty(reader.GetName(i), JToken.Parse(reader.GetString(i))));
                    }
                }
                results.Add(job);
            }
            reader.Close();
            return(results);
        }
Example #2
0
        internal override IEnumerable <JObject> ExecuteQueryScript(JsonQuery jsonQuery)
        {
            string queryScript          = jsonQuery.ToString(DatabaseType.DocumentDB);
            IEnumerable <dynamic> items = this.Connection.ExecuteDocDbQuery(queryScript);

            foreach (dynamic item in items)
            {
                yield return((JObject)item);
            }
        }