Browse Source

1、处理cosmosdb参数化查询拼接参数dict时顺序于拼接sql不一致的问题

李思淳 5 years ago
parent
commit
186a487269

+ 4 - 2
TEAMModelOS.SDK/Module/AzureCosmosDBV3/SQLHelperParametric.cs

@@ -138,7 +138,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
 
                 //处理顺序
                 Stack<KeyValuePair<string, object>> stack = new Stack<KeyValuePair<string, object>>();
-
+                Dictionary<string, object> forGetParmeter = new Dictionary<string, object>(); 
                 foreach (string item in dict.Keys)
                 {
                     if (item.EndsWith(".|"))
@@ -154,6 +154,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                         stack.Push(new KeyValuePair<string, object>(item, dict[item]));
                     }
                 }
+
                 string Join = " join ";
                 string instring = " in ";
                 Dictionary<string, string> keyValues = new Dictionary<string, string>();
@@ -168,6 +169,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                 for (int k = 0; k < stackCount; k++)
                 {
                     KeyValuePair<string, object> item = stack.Pop();
+                    forGetParmeter.Add(item.Key, item.Value);
                     bool isLikeSQL = false;
                     if (item.Key.StartsWith("$.") || item.Key.StartsWith("!$."))
                     {
@@ -286,7 +288,7 @@ namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
                 ReplaceKeyWords(ref sql);
 
                 //参数化查询拼接 参数dict
-                parmeters = GetParmeter(dict, parmeters, offsetNum, limitNum);
+                parmeters = GetParmeter(forGetParmeter, parmeters, offsetNum, limitNum);
 
 
                 CosmosDbQuery cosmosDbQuery = new CosmosDbQuery

+ 1 - 1
TEAMModelOS/Controllers/Test/TestController.cs

@@ -57,7 +57,7 @@ namespace TEAMModelOS.Controllers.Test
 
             List<Family> families = await azureCosmosDBRepository.FindByDict<Family>(dict: request.@params);
 
-          return builder.Data(families).Extend(new Dictionary<string, object> { {"Count", families.Count } }).build();
+            return builder.Data(families).Extend(new Dictionary<string, object> { {"Count", families.Count } }).build();
         }
     }
 }