Explorar el Código

AzureCosmosDBRepository增加ReplaceKeyWords

李思淳 hace 5 años
padre
commit
30fc755d1a

+ 16 - 0
TEAMModelOS.SDK/Module/AzureCosmosDB/Configuration/SQLHelper.cs

@@ -15,6 +15,22 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDB.Configuration
         static readonly string[] LogicOpers = new string[] { " and ", " or " };
         static readonly string[] CompareOpers = new string[] { " > ", " < ", " <= ", " >= ", " = ", " != ", " like ", " not like ", " in " };
 
+
+        public static void ReplaceKeyWords(ref StringBuilder sql) {
+            sql.Replace(".order.", "['order'].");
+            sql.Replace(".order ", "['order']");
+
+            sql.Replace(".group.", "['group'].");
+            sql.Replace(".group ", "['group']");
+
+            sql.Replace(".end.", "['end'].");
+            sql.Replace(".end ", "['end']");
+
+            sql.Replace(".having.", "['having'].");
+            sql.Replace(".having ", "['having']");
+        }
+
+
         public static void GetSQL(Dictionary<string, object> dict, ref StringBuilder sql)
         {
 

+ 3 - 0
TEAMModelOS.SDK/Module/AzureCosmosDB/Implements/AzureCosmosDBRepository.cs

@@ -695,6 +695,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDB.Implements
             DocumentCollection collection=   await InitializeCollection<T>();
             StringBuilder sql = new StringBuilder("select value(c) from c");
             SQLHelper.GetSQL(dict,ref sql);
+            SQLHelper.ReplaceKeyWords(ref sql);
             //查询条数 -1是全部
             FeedOptions queryOptions = new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = IsPk };
             var query = CosmosClient.CreateDocumentQuery<T>(UriFactory.CreateDocumentCollectionUri(Database, collection.Id), sql.ToString(), queryOptions);
@@ -797,6 +798,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDB.Implements
                     }*/
                 StringBuilder sql = new StringBuilder("select value(c) from c");
                 SQLHelper.GetSQL(dict,ref sql);
+                SQLHelper.ReplaceKeyWords(ref sql);
                 FeedOptions queryOptions;
                 if (collection.PartitionKey.Paths.Count > 0)
                 {
@@ -825,6 +827,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDB.Implements
                 
                 StringBuilder sql = new StringBuilder("select value count(c) from c");
                 SQLHelper.GetSQL(dict, ref sql);
+                SQLHelper.ReplaceKeyWords(ref sql);
                 FeedOptions queryOptions;
                 if (collection.PartitionKey.Paths.Count > 0)
                 {