JsonCommonProvider.cs 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. using Newtonsoft.Json.Linq;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. using System.Linq;
  6. namespace SqlSugar
  7. {
  8. internal class JsonCommonProvider
  9. {
  10. public JsonCommonProvider(ISqlSugarClient context)
  11. {
  12. //this.context = context;
  13. this.sqlBuilder = InstanceFactory.GetSqlbuilder(context.CurrentConnectionConfig);
  14. if (context is SqlSugarProvider)
  15. {
  16. this.sqlBuilder.Context = context as SqlSugarProvider;
  17. }
  18. else if (context is SqlSugarScopeProvider)
  19. {
  20. this.sqlBuilder.Context = (context as SqlSugarScopeProvider).conn;
  21. }
  22. else if(context is SqlSugarScope)
  23. {
  24. this.sqlBuilder.Context = (context as SqlSugarScope).GetConnection(context.CurrentConnectionConfig.ConfigId);
  25. }
  26. else
  27. {
  28. this.sqlBuilder.Context = (context as SqlSugarClient).Context;
  29. }
  30. }
  31. //public ISqlSugarClient context { get; set; }
  32. public ISqlBuilder sqlBuilder { get; set; }
  33. public int ParameterIndex { get { return ((SqlBuilderProvider)sqlBuilder)?.GetParameterNameIndex??0; } }
  34. public JsonTableNameInfo GetTableName(JToken item)
  35. {
  36. JsonTableNameInfo jsonTableNameInfo = new JsonTableNameInfo();
  37. if (item.First().Type == JTokenType.Array && item.First.Count() == 2)
  38. {
  39. var tableName = item.First()[0].ObjToString();
  40. var shortName = item.First()[1].ObjToString();
  41. jsonTableNameInfo.ShortName = shortName;
  42. jsonTableNameInfo.TableName = tableName;
  43. }
  44. else
  45. {
  46. var value = item.First().ToString();
  47. jsonTableNameInfo.TableName = value;
  48. }
  49. return jsonTableNameInfo;
  50. }
  51. public KeyValuePair<string, SugarParameter[]> GetWhere(string item, SqlSugarProvider context)
  52. {
  53. if (!IsConditionalModel(item))
  54. {
  55. var obj = context.Utilities.JsonToSqlFuncModels(item);
  56. var sqlobj = sqlBuilder.FuncModelToSql(obj);
  57. return sqlobj;
  58. }
  59. else
  60. {
  61. var obj = context.Utilities.JsonToConditionalModels(item);
  62. var sqlObj = sqlBuilder.ConditionalModelToSql(obj, 0);
  63. return sqlObj;
  64. }
  65. }
  66. public KeyValuePair<string,SugarParameter[]> GetWhere(JToken item,SqlSugarProvider context)
  67. {
  68. var value = item.First().ToString();
  69. Check.ExceptionEasy(item.First().Type != JTokenType.Array, "Where format error " + item, "Where格式错误" + item);
  70. if (!IsConditionalModel(value))
  71. {
  72. var obj = context.Utilities.JsonToSqlFuncModels(value);
  73. var sqlobj = sqlBuilder.FuncModelToSql(obj);
  74. return sqlobj;
  75. }
  76. else
  77. {
  78. var obj = context.Utilities.JsonToConditionalModels(value);
  79. var sqlObj = sqlBuilder.ConditionalModelToSql(obj, 0);
  80. return sqlObj;
  81. }
  82. }
  83. private static bool IsConditionalModel(string value)
  84. {
  85. return value.ToLower().Contains("fieldname");
  86. }
  87. }
  88. }