Repository.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. using System;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Data.Common;
  6. using System.Linq;
  7. using System.Linq.Expressions;
  8. using System.Text.RegularExpressions;
  9. using System.Threading.Tasks;
  10. using Microsoft.EntityFrameworkCore;
  11. using YiSha.Util;
  12. using YiSha.Util.Model;
  13. namespace YiSha.Data.Repository
  14. {
  15. /// <summary>
  16. /// 创建人:admin
  17. /// 日 期:2018.10.18
  18. /// 描 述:定义仓储模型中的数据标准操作接口
  19. /// </summary>
  20. public class Repository
  21. {
  22. #region 构造函数
  23. public IDatabase db;
  24. public Repository(IDatabase iDatabase)
  25. {
  26. this.db = iDatabase;
  27. }
  28. #endregion
  29. #region 事务提交
  30. public async Task<Repository> BeginTrans()
  31. {
  32. await db.BeginTrans();
  33. return this;
  34. }
  35. public async Task<int> CommitTrans()
  36. {
  37. return await db.CommitTrans();
  38. }
  39. public async Task RollbackTrans()
  40. {
  41. await db.RollbackTrans();
  42. }
  43. #endregion
  44. #region 执行 SQL 语句
  45. public async Task<int> ExecuteBySql(string strSql)
  46. {
  47. return await db.ExecuteBySql(strSql);
  48. }
  49. public async Task<int> ExecuteBySql(string strSql, params DbParameter[] dbParameter)
  50. {
  51. return await db.ExecuteBySql(strSql, dbParameter);
  52. }
  53. public async Task<int> ExecuteByProc(string procName)
  54. {
  55. return await db.ExecuteByProc(procName);
  56. }
  57. public async Task<int> ExecuteByProc(string procName, params DbParameter[] dbParameter)
  58. {
  59. return await db.ExecuteByProc(procName, dbParameter);
  60. }
  61. #endregion
  62. #region 对象实体 添加、修改、删除
  63. public async Task<int> Insert<T>(T entity) where T : class
  64. {
  65. return await db.Insert<T>(entity);
  66. }
  67. public async Task<int> Insert<T>(List<T> entity) where T : class
  68. {
  69. return await db.Insert<T>(entity);
  70. }
  71. public async Task<int> Delete<T>() where T : class
  72. {
  73. return await db.Delete<T>();
  74. }
  75. public async Task<int> Delete<T>(T entity) where T : class
  76. {
  77. return await db.Delete<T>(entity);
  78. }
  79. public async Task<int> Delete<T>(List<T> entity) where T : class
  80. {
  81. return await db.Delete<T>(entity);
  82. }
  83. public async Task<int> Delete<T>(Expression<Func<T, bool>> condition) where T : class, new()
  84. {
  85. return await db.Delete<T>(condition);
  86. }
  87. public async Task<int> Delete<T>(string id) where T : class
  88. {
  89. return await db.Delete<T>(id);
  90. }
  91. public async Task<int> Delete<T>(string[] id) where T : class
  92. {
  93. return await db.Delete<T>(id);
  94. }
  95. public async Task<int> Delete<T>(string propertyName, string propertyValue) where T : class
  96. {
  97. return await db.Delete<T>(propertyName, propertyValue);
  98. }
  99. public async Task<int> Update<T>(T entity) where T : class
  100. {
  101. return await db.Update<T>(entity);
  102. }
  103. public async Task<int> Update<T>(List<T> entity) where T : class
  104. {
  105. return await db.Update<T>(entity);
  106. }
  107. public async Task<int> UpdateAllField<T>(T entity) where T : class
  108. {
  109. return await db.UpdateAllField<T>(entity);
  110. }
  111. public async Task<int> Update<T>(Expression<Func<T, bool>> condition) where T : class, new()
  112. {
  113. return await db.Update<T>(condition);
  114. }
  115. public IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class, new()
  116. {
  117. return db.IQueryable<T>(condition);
  118. }
  119. #endregion
  120. #region 对象实体 查询
  121. public async Task<T> FindEntity<T>(int id) where T : class
  122. {
  123. return await db.FindEntity<T>(id);
  124. }
  125. public async Task<T> FindEntity<T>(Expression<Func<T, bool>> condition) where T : class, new()
  126. {
  127. return await db.FindEntity<T>(condition);
  128. }
  129. public async Task<IEnumerable<T>> FindList<T>() where T : class, new()
  130. {
  131. return await db.FindList<T>();
  132. }
  133. public async Task<IEnumerable<T>> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new()
  134. {
  135. return await db.FindList<T>(condition);
  136. }
  137. public async Task<IEnumerable<T>> FindList<T>(string strSql) where T : class
  138. {
  139. return await db.FindList<T>(strSql);
  140. }
  141. public async Task<IEnumerable<T>> FindList<T>(string strSql, DbParameter[] dbParameter) where T : class
  142. {
  143. return await db.FindList<T>(strSql, dbParameter);
  144. }
  145. public async Task<(int total, IEnumerable<T> list)> FindList<T>(Pagination pagination) where T : class, new()
  146. {
  147. int total = pagination.TotalCount;
  148. var data = await db.FindList<T>(pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
  149. pagination.TotalCount = total;
  150. return data;
  151. }
  152. public async Task<IEnumerable<T>> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new()
  153. {
  154. var data = await db.FindList<T>(condition, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
  155. pagination.TotalCount = data.total;
  156. return data.list;
  157. }
  158. public async Task<(int total, IEnumerable<T> list)> FindList<T>(string strSql, Pagination pagination) where T : class
  159. {
  160. int total = pagination.TotalCount;
  161. var data = await db.FindList<T>(strSql, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
  162. pagination.TotalCount = total;
  163. return data;
  164. }
  165. public async Task<IEnumerable<T>> FindList<T>(string strSql, DbParameter[] dbParameter, Pagination pagination) where T : class
  166. {
  167. var data = await db.FindList<T>(strSql, dbParameter, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
  168. pagination.TotalCount = data.total;
  169. return data.Item2;
  170. }
  171. #endregion
  172. #region 数据源 查询
  173. public async Task<DataTable> FindTable(string strSql)
  174. {
  175. return await db.FindTable(strSql);
  176. }
  177. public async Task<DataTable> FindTable(string strSql, DbParameter[] dbParameter)
  178. {
  179. return await db.FindTable(strSql, dbParameter);
  180. }
  181. public async Task<DataTable> FindTable(string strSql, Pagination pagination)
  182. {
  183. var data = await db.FindTable(strSql, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
  184. pagination.TotalCount = data.total;
  185. return data.Item2;
  186. }
  187. public async Task<DataTable> FindTable(string strSql, DbParameter[] dbParameter, Pagination pagination)
  188. {
  189. var data = await db.FindTable(strSql, dbParameter, pagination.Sort, pagination.SortType.ToLower() == "asc" ? true : false, pagination.PageSize, pagination.PageIndex);
  190. pagination.TotalCount = data.total;
  191. return data.Item2;
  192. }
  193. public async Task<object> FindObject(string strSql)
  194. {
  195. return await db.FindObject(strSql);
  196. }
  197. public async Task<object> FindObject(string strSql, DbParameter[] dbParameter)
  198. {
  199. return await db.FindObject(strSql, dbParameter);
  200. }
  201. public async Task<T> FindObject<T>(string strSql, DbParameter[] dbParameter = null) where T : class
  202. {
  203. return await db.FindObject<T>(strSql, dbParameter);
  204. }
  205. #endregion
  206. }
  207. }