CacheKeyBuider.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. namespace SqlSugar
  7. {
  8. internal class CacheKeyBuider
  9. {
  10. public static CacheKey GetKey(SqlSugarProvider context, QueryBuilder queryBuilder)
  11. {
  12. CacheKey result = new CacheKey();
  13. result.Database = context.Context.Ado.Connection.Database;
  14. AddTables(context, queryBuilder, result);
  15. AddIdentificationList(queryBuilder, result);
  16. if (queryBuilder.ResultType!=null)
  17. {
  18. result.IdentificationList.Add(queryBuilder.ResultType.FullName);
  19. }
  20. return result;
  21. }
  22. private static void AddIdentificationList(QueryBuilder queryBuilder, CacheKey result)
  23. {
  24. result.IdentificationList = new List<string>();
  25. result.IdentificationList.Add(queryBuilder.GetTableNameString);
  26. result.IdentificationList.Add(queryBuilder.GetJoinValueString);
  27. result.IdentificationList.Add(queryBuilder.GetOrderByString);
  28. result.IdentificationList.Add(queryBuilder.GetGroupByString);
  29. result.IdentificationList.Add(queryBuilder.GetWhereValueString);
  30. result.IdentificationList.Add(queryBuilder.PartitionByValue);
  31. result.IdentificationList.Add(queryBuilder.Take.ObjToString());
  32. result.IdentificationList.Add(queryBuilder.Skip.ObjToString());
  33. result.IdentificationList.Add(queryBuilder.IsCount.ObjToString());
  34. result.IdentificationList.Add(UtilMethods.GetMD5(queryBuilder.GetSelectValue.ObjToString()));
  35. if (queryBuilder.Parameters.HasValue())
  36. {
  37. foreach (var item in queryBuilder.Parameters)
  38. {
  39. result.IdentificationList.Add(item.ParameterName + "_" + item.Value);
  40. }
  41. }
  42. }
  43. private static void AddTables(ISqlSugarClient context, QueryBuilder queryBuilder, CacheKey result)
  44. {
  45. result.Tables = new List<string>();
  46. result.Tables.Add(context.EntityMaintenance.GetTableName(queryBuilder.EntityName));
  47. if (queryBuilder.EasyJoinInfos.HasValue())
  48. {
  49. foreach (var item in queryBuilder.EasyJoinInfos)
  50. {
  51. result.Tables.Add(context.EntityMaintenance.GetTableName(item.Value));
  52. }
  53. }
  54. if (queryBuilder.JoinQueryInfos.HasValue())
  55. {
  56. foreach (var item in queryBuilder.JoinQueryInfos)
  57. {
  58. result.Tables.Add(queryBuilder.Builder.GetNoTranslationColumnName(item.TableName));
  59. }
  60. }
  61. }
  62. }
  63. internal class SugarCacheDictionary
  64. {
  65. }
  66. internal class SugarCacheDictionaryList
  67. {
  68. }
  69. internal class SugarCacheDataTable
  70. {
  71. }
  72. }