ConfigQuery.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace SqlSugar
  8. {
  9. public class ConfigQuery
  10. {
  11. public SqlSugarProvider Context { get; set; }
  12. public void SetTable<T>(Expression<Func<T, object>> keyExpression, Expression<Func<T, object>> valueTextExpression, string uniqueCode = null, Expression<Func<T, object>> whereExpression=null)
  13. {
  14. lock (SqlFuncExtendsion.TableInfos)
  15. {
  16. var entity = this.Context.EntityMaintenance.GetEntityInfo<T>();
  17. ExpressionContext context = new ExpressionContext();
  18. var query = Context.Queryable<T>().QueryBuilder;
  19. var keyValue = query.GetExpressionValue(keyExpression, ResolveExpressType.FieldSingle).GetString();
  20. var ValueValue = query.GetExpressionValue(valueTextExpression, ResolveExpressType.FieldSingle).GetString();
  21. string where = null;
  22. if (whereExpression != null)
  23. {
  24. where = query.GetExpressionValue(whereExpression, ResolveExpressType.WhereSingle).GetResultString();
  25. }
  26. context.MappingTables = this.Context.MappingTables;
  27. if (!SqlFuncExtendsion.TableInfos.Any(y => y.Type == typeof(T) && y.Code == uniqueCode))
  28. {
  29. SqlFuncExtendsion.TableInfos.Add(new ConfigTableInfo()
  30. {
  31. Type = typeof(T),
  32. TableName = entity.DbTableName,
  33. Key = keyValue,
  34. Value = ValueValue,
  35. Where = where,
  36. Parameter = query.Parameters,
  37. Code = uniqueCode
  38. });
  39. }
  40. else
  41. {
  42. Check.Exception(true, "SetKeyValue error , entity & uniqueCode already exist");
  43. }
  44. }
  45. }
  46. public void SetTable<T>(Expression<Func<T, object>> key, Expression<Func<T, object>> value)
  47. {
  48. SetTable<T>(key,value, null,null);
  49. }
  50. public bool Any()
  51. {
  52. return SqlFuncExtendsion.TableInfos.Any();
  53. }
  54. }
  55. public class ConfigTableInfo
  56. {
  57. public string Code { get; set; }
  58. public Type Type { get; set; }
  59. public string TableName { get; set; }
  60. public string Key { get; set; }
  61. public string Value { get; set; }
  62. public string Where { get; set; }
  63. public List<SugarParameter> Parameter { get; set; }
  64. }
  65. }