Repository.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. 
  2. using SqlSugar;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Dynamic;
  7. using System.Linq.Expressions;
  8. using System.Reflection;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using Wms.Screen.SqlSugar.ZhongTian;
  12. namespace Wms.Screen.SqlSugar.Repository
  13. {
  14. public class Repository<T> : IRepository<T> where T : BaseModel, new()
  15. {
  16. public SqlSugarClient _db;
  17. public Repository(SqlSugarClient dbContext)
  18. {
  19. _db = dbContext ?? throw new ArgumentNullException(nameof(dbContext));
  20. }
  21. public DbResult<bool> UseTran(Action action)
  22. {
  23. var result = _db.Ado.UseTran(() => action());
  24. return result;
  25. }
  26. public DbResult<bool> UseTran(SqlSugarClient client, Action action)
  27. {
  28. var result = client.Ado.UseTran(() => action());
  29. return result;
  30. }
  31. public bool UseTran2(Action action)
  32. {
  33. var result = _db.Ado.UseTran(() => action());
  34. return result.IsSuccess;
  35. }
  36. #region query
  37. public bool IsAny(Expression<Func<T, bool>> expression)
  38. {
  39. return _db.Queryable<T>().Where(expression).Any();
  40. }
  41. public ISugarQueryable<T> Queryable()
  42. {
  43. return _db.Queryable<T>();
  44. }
  45. public ISugarQueryable<T> QueryableIncludeDelete()
  46. {
  47. return _db.Queryable<T>();
  48. }
  49. public ISugarQueryable<T> Queryable(Expression<Func<T, bool>> expression)
  50. {
  51. return _db.Queryable<T>().Where(expression);
  52. }
  53. public ISugarQueryable<ExpandoObject> Queryable(string tableName, string shortName)
  54. {
  55. return _db.Queryable(tableName, shortName);
  56. }
  57. public List<T> QueryableToList(Expression<Func<T, bool>> expression)
  58. {
  59. return _db.Queryable<T>().Where(expression).ToList();
  60. }
  61. public Task<List<T>> QueryableToListAsync(Expression<Func<T, bool>> expression)
  62. {
  63. return _db.Queryable<T>().Where(expression).ToListAsync();
  64. }
  65. //public string QueryableToJson(string select, Expression<Func<T, bool>> expressionWhere)
  66. //{
  67. // var query = _db.Queryable<T>().Select(select).Where(expressionWhere).Where(p => p.IsDelete == 0).ToList();
  68. // return query.JilToJson();
  69. //}
  70. public T QueryableToEntity(Expression<Func<T, bool>> expression)
  71. {
  72. return _db.Queryable<T>().Where(expression).First();
  73. }
  74. public List<T> QueryableToList(string tableName)
  75. {
  76. return _db.Queryable<T>(tableName).ToList();
  77. }
  78. public List<T> QueryableToList(string tableName, Expression<Func<T, bool>> expression)
  79. {
  80. return _db.Queryable<T>(tableName).Where(expression).ToList();
  81. }
  82. public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, int pageIndex = 0, int pageSize = 10)
  83. {
  84. int totalNumber = 0;
  85. var list = _db.Queryable<T>().Where(expression).ToPageList(pageIndex, pageSize, ref totalNumber);
  86. return (list, totalNumber);
  87. }
  88. public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, string order, int pageIndex = 0, int pageSize = 10)
  89. {
  90. int totalNumber = 0;
  91. var list = _db.Queryable<T>().Where(expression).OrderBy(order).ToPageList(pageIndex, pageSize, ref totalNumber);
  92. return (list, totalNumber);
  93. }
  94. public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, Expression<Func<T, object>> orderFiled, string orderBy, int pageIndex = 0, int pageSize = 10)
  95. {
  96. int totalNumber = 0;
  97. if (orderBy.Equals("DESC", StringComparison.OrdinalIgnoreCase))
  98. {
  99. var list = _db.Queryable<T>().Where(expression).OrderBy(orderFiled, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref totalNumber);
  100. return (list, totalNumber);
  101. }
  102. else
  103. {
  104. var list = _db.Queryable<T>().Where(expression).OrderBy(orderFiled, OrderByType.Asc).ToPageList(pageIndex, pageSize, ref totalNumber);
  105. return (list, totalNumber);
  106. }
  107. }
  108. public List<T> SqlQueryToList(string sql, object obj = null)
  109. {
  110. return _db.Ado.SqlQuery<T>(sql, obj);
  111. }
  112. #endregion query
  113. /// <summary>
  114. /// 此方法不带output返回值
  115. /// var list = new List<SugarParameter>();
  116. /// list.Add(new SugarParameter(ParaName, ParaValue)); input
  117. /// </summary>
  118. /// <param name="procedureName"></param>
  119. /// <param name="parameters"></param>
  120. /// <returns></returns>
  121. public DataTable UseStoredProcedureToDataTable(string procedureName, List<SugarParameter> parameters)
  122. {
  123. return _db.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters);
  124. }
  125. /// <summary>
  126. /// 带output返回值
  127. /// var list = new List<SugarParameter>();
  128. /// list.Add(new SugarParameter(ParaName, ParaValue, true)); output
  129. /// list.Add(new SugarParameter(ParaName, ParaValue)); input
  130. /// </summary>
  131. /// <param name="procedureName"></param>
  132. /// <param name="parameters"></param>
  133. /// <returns></returns>
  134. public (DataTable, List<SugarParameter>) UseStoredProcedureToTuple(string procedureName, List<SugarParameter> parameters)
  135. {
  136. var result = (_db.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters), parameters);
  137. return result;
  138. }
  139. }
  140. }