Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

332 linhas
12 KiB

  1. using Learun.Util;
  2. using System;
  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.Threading.Tasks;
  9. namespace Learun.DataBase.Repository
  10. {
  11. /// <summary>
  12. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  13. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  14. /// 创建人:陈彬彬
  15. /// 日 期:2017.03.04
  16. /// 描 述:定义仓储模型中的数据标准操作接口
  17. /// </summary>
  18. public interface IRepository
  19. {
  20. #region 连接信息
  21. /// <summary>
  22. /// 获取连接上下文
  23. /// </summary>
  24. /// <returns></returns>
  25. DbConnection getDbConnection();
  26. #endregion
  27. #region 事务
  28. /// <summary>
  29. /// 开始事务
  30. /// </summary>
  31. /// <returns></returns>
  32. IRepository BeginTrans();
  33. /// <summary>
  34. /// 提交
  35. /// </summary>
  36. void Commit();
  37. /// <summary>
  38. /// 回滚
  39. /// </summary>
  40. void Rollback();
  41. #endregion
  42. #region 执行 SQL 代码
  43. Task<int> ExecuteAsyncBySql(string strSql);
  44. /// <summary>
  45. /// 执行sql语句
  46. /// </summary>
  47. /// <param name="strSql">sql语句</param>
  48. /// <returns></returns>
  49. int ExecuteBySql(string strSql);
  50. /// <summary>
  51. /// 执行sql语句
  52. /// </summary>
  53. /// <param name="strSql">sql语句</param>
  54. /// <param name="dbParameter">参数</param>
  55. /// <returns></returns>
  56. int ExecuteBySql(string strSql, object dbParameter);
  57. /// <summary>
  58. /// 执行存储过程
  59. /// </summary>
  60. /// <param name="procName">存储过程名称</param>
  61. /// <returns></returns>
  62. int ExecuteByProc(string procName);
  63. /// <summary>
  64. /// 执行存储过程
  65. /// </summary>
  66. /// <param name="procName">存储过程名称</param>
  67. /// <param name="dbParameter">参数</param>
  68. /// <returns></returns>
  69. int ExecuteByProc(string procName, object dbParameter);
  70. /// <summary>
  71. /// 执行存储过程
  72. /// </summary>
  73. /// <param name="procName">存储过程名称</param>
  74. /// <returns></returns>
  75. T ExecuteByProc<T>(string procName) where T : class;
  76. /// <summary>
  77. /// 执行存储过程
  78. /// </summary>
  79. /// <param name="procName">存储过程名称</param>
  80. /// <param name="dbParameter">参数</param>
  81. /// <returns></returns>
  82. T ExecuteByProc<T>(string procName, object dbParameter) where T : class;
  83. /// <summary>
  84. /// 执行存储过程
  85. /// </summary>
  86. /// <param name="procName">存储过程名称</param>
  87. /// <returns></returns>
  88. IEnumerable<T> QueryByProc<T>(string procName) where T : class;
  89. /// <summary>
  90. /// 执行存储过程
  91. /// </summary>
  92. /// <param name="procName">存储过程名称</param>
  93. /// <param name="dbParameter">参数</param>
  94. /// <returns></returns>
  95. IEnumerable<T> QueryByProc<T>(string procName, object dbParameter) where T : class;
  96. #endregion
  97. #region 对象实体 添加、修改、删除
  98. /// <summary>
  99. /// 插入实体数据
  100. /// </summary>
  101. /// <typeparam name="T">类型</typeparam>
  102. /// <param name="entity">实体数据</param>
  103. /// <returns></returns>
  104. int Insert<T>(T entity) where T : class;
  105. Task<int> InsertAsync<T>(List<T> entity) where T : class;
  106. /// <summary>
  107. /// 批量插入实体数据
  108. /// </summary>
  109. /// <typeparam name="T">类型</typeparam>
  110. /// <param name="entities">实体数据列表</param>
  111. /// <returns></returns>
  112. int Insert<T>(List<T> entity) where T : class;
  113. /// <summary>
  114. /// 删除实体数据
  115. /// </summary>
  116. /// <typeparam name="T">类型</typeparam>
  117. /// <param name="entity">实体数据(需要主键赋值)</param>
  118. /// <returns></returns>
  119. int Delete<T>(T entity) where T : class;
  120. /// <summary>
  121. /// 批量删除实体数据
  122. /// </summary>
  123. /// <typeparam name="T">类型</typeparam>
  124. /// <param name="entities">实体数据列表</param>
  125. /// <returns></returns>
  126. int Delete<T>(List<T> entity) where T : class;
  127. /// <summary>
  128. /// 删除表数据(根据Lambda表达式)
  129. /// </summary>
  130. /// <typeparam name="T"></typeparam>
  131. /// <param name="condition"></param>
  132. /// <returns></returns>
  133. int Delete<T>(Expression<Func<T, bool>> condition) where T : class, new();
  134. /// <summary>
  135. /// 更新实体数据
  136. /// </summary>
  137. /// <typeparam name="T">类型</typeparam>
  138. /// <param name="entity">实体数据</param>
  139. /// <returns></returns>
  140. int Update<T>(T entity) where T : class;
  141. /// <summary>
  142. /// 更新实体数据
  143. /// </summary>
  144. /// <typeparam name="T">类型</typeparam>
  145. /// <param name="entity">实体数据</param>
  146. /// <returns></returns>
  147. int UpdateEx<T>(T entity) where T : class;
  148. /// <summary>
  149. /// 批量更新实体数据
  150. /// </summary>
  151. /// <typeparam name="T">类型</typeparam>
  152. /// <param name="entities">实体数据列表</param>
  153. /// <returns></returns>
  154. int Update<T>(List<T> entity) where T : class;
  155. #endregion
  156. #region 对象实体 查询
  157. /// <summary>
  158. /// 查找一个实体根据主键
  159. /// </summary>
  160. /// <typeparam name="T">类型</typeparam>
  161. /// <param name="KeyValue">主键</param>
  162. /// <returns></returns>
  163. T FindEntity<T>(object keyValue) where T : class;
  164. /// <summary>
  165. /// 查找一个实体(根据表达式)
  166. /// </summary>
  167. /// <typeparam name="T">类型</typeparam>
  168. /// <param name="condition">表达式</param>
  169. /// <returns></returns>
  170. T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class, new();
  171. /// <summary>
  172. /// 查找一个实体(根据sql)
  173. /// </summary>
  174. /// <typeparam name="T">类型</typeparam>
  175. /// <param name="strSql">sql语句</param>
  176. /// <param name="dbParameter">参数</param>
  177. /// <returns></returns>
  178. T FindEntity<T>(string strSql, object dbParameter) where T : class, new();
  179. /// <summary>
  180. /// 获取IQueryable表达式
  181. /// </summary>
  182. /// <typeparam name="T">类型</typeparam>
  183. /// <returns></returns>
  184. IQueryable<T> IQueryable<T>() where T : class, new();
  185. /// <summary>
  186. /// 获取IQueryable表达式(根据表达式)
  187. /// </summary>
  188. /// <typeparam name="T">类型</typeparam>
  189. /// <param name="condition">表达式</param>
  190. /// <returns></returns>
  191. IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class, new();
  192. /// <summary>
  193. /// 查询列表(获取表所有数据)
  194. /// </summary>
  195. /// <typeparam name="T">类型</typeparam>
  196. /// <returns></returns>
  197. IEnumerable<T> FindList<T>() where T : class, new();
  198. Task<IEnumerable<T>> FindListAsync<T>() where T : class, new();
  199. Task<IEnumerable<T>> FindListAsync<T>(string strSql, object dbParameter) where T : class;
  200. Task<IEnumerable<T>> FindListAsync<T>(string strSql) where T : class;
  201. /// <summary>
  202. /// 查询列表根据sql语句
  203. /// </summary>
  204. /// <typeparam name="T">类型</typeparam>
  205. /// <param name="strSql">sql语句</param>
  206. /// <returns></returns>
  207. IEnumerable<T> FindList<T>(string strSql) where T : class;
  208. /// <summary>
  209. /// 查询列表根据sql语句(带参数)
  210. /// </summary>
  211. /// <typeparam name="T">类型</typeparam>
  212. /// <param name="strSql">sql语句</param>
  213. /// <param name="dbParameter">参数</param>
  214. /// <returns></returns>
  215. IEnumerable<T> FindList<T>(string strSql, object dbParameter) where T : class;
  216. /// <summary>
  217. /// 查询列表(分页)
  218. /// </summary>
  219. /// <typeparam name="T">类型</typeparam>
  220. /// <param name="pagination">分页数据</param>
  221. /// <returns></returns>
  222. IEnumerable<T> FindList<T>(Pagination pagination) where T : class, new();
  223. IEnumerable<T> FindList<T>(List<T> data, Pagination pagination) where T : class, new();
  224. IEnumerable<T> FindList<T>(List<T> data, Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new();
  225. /// <summary>
  226. /// 查询列表(分页)
  227. /// </summary>
  228. /// <typeparam name="T">类型</typeparam>
  229. /// <param name="condition">表达式</param>
  230. /// <param name="pagination">分页数据</param>
  231. /// <returns></returns>
  232. IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new();
  233. /// <summary>
  234. /// 查询数据
  235. /// </summary>
  236. /// <typeparam name="T">类型</typeparam>
  237. /// <param name="condition">表达式</param>
  238. /// <returns></returns>
  239. IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new();
  240. /// <summary>
  241. /// 查询列表(分页)
  242. /// </summary>
  243. /// <typeparam name="T">类型</typeparam>
  244. /// <param name="strSql">SQL语句</param>
  245. /// <param name="pagination">分页数据</param>
  246. /// <returns></returns>
  247. IEnumerable<T> FindList<T>(string strSql, Pagination pagination) where T : class;
  248. /// <summary>
  249. /// 查询列表(分页)
  250. /// </summary>
  251. /// <typeparam name="T">类型</typeparam>
  252. /// <param name="strSql">SQL语句</param>
  253. /// <param name="dbParameter">参数</param>
  254. /// <param name="pagination">分页数据</param>
  255. /// <returns></returns>
  256. IEnumerable<T> FindList<T>(string strSql, object dbParameter, Pagination pagination) where T : class;
  257. #endregion
  258. #region 数据源查询
  259. /// <summary>
  260. /// 查询数据
  261. /// </summary>
  262. /// <param name="strSql">sql语句</param>
  263. /// <returns></returns>
  264. DataTable FindTable(string strSql);
  265. /// <summary>
  266. /// 查询数据
  267. /// </summary>
  268. /// <param name="strSql">sql语句</param>
  269. /// <param name="dbParameter">参数</param>
  270. /// <returns></returns>
  271. DataTable FindTable(string strSql, object dbParameter);
  272. /// <summary>
  273. /// 查询列表(分页)
  274. /// </summary>
  275. /// <param name="strSql">sql语句</param>
  276. /// <param name="pagination">分页数据</param>
  277. /// <returns></returns>
  278. DataTable FindTable(string strSql, Pagination pagination);
  279. /// <summary>
  280. /// 查询列表(分页)
  281. /// </summary>
  282. /// <param name="strSql">sql语句</param>
  283. /// <param name="dbParameter">参数</param>
  284. /// <param name="pagination">分页数据</param>
  285. /// <returns></returns>
  286. DataTable FindTable(string strSql, object dbParameter, Pagination pagination);
  287. /// <summary>
  288. /// 获取查询对象
  289. /// </summary>
  290. /// <param name="strSql">SQL语句</param>
  291. /// <returns></returns>
  292. object FindObject(string strSql);
  293. /// <summary>
  294. /// 获取查询对象
  295. /// </summary>
  296. /// <param name="strSql">sql语句</param>
  297. /// <param name="dbParameter">参数</param>
  298. /// <returns></returns>
  299. object FindObject(string strSql, object dbParameter);
  300. #endregion
  301. #region 扩展方法
  302. /// <summary>
  303. /// 获取数据库表数据
  304. /// </summary>
  305. /// <typeparam name="T">反序列化类型</typeparam>
  306. /// <returns></returns>
  307. IEnumerable<T> GetDBTable<T>() where T : class, new();
  308. /// <summary>
  309. /// 获取数据库表字段数据
  310. /// </summary>
  311. /// <typeparam name="T">反序列化类型</typeparam>
  312. /// <param name="tableName">表名</param>
  313. /// <returns></returns>
  314. IEnumerable<T> GetDBTableFields<T>(string tableName) where T : class, new();
  315. #endregion
  316. }
  317. }