You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

331 lines
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. /// <summary>
  225. /// 查询列表(分页)
  226. /// </summary>
  227. /// <typeparam name="T">类型</typeparam>
  228. /// <param name="condition">表达式</param>
  229. /// <param name="pagination">分页数据</param>
  230. /// <returns></returns>
  231. IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new();
  232. /// <summary>
  233. /// 查询数据
  234. /// </summary>
  235. /// <typeparam name="T">类型</typeparam>
  236. /// <param name="condition">表达式</param>
  237. /// <returns></returns>
  238. IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new();
  239. /// <summary>
  240. /// 查询列表(分页)
  241. /// </summary>
  242. /// <typeparam name="T">类型</typeparam>
  243. /// <param name="strSql">SQL语句</param>
  244. /// <param name="pagination">分页数据</param>
  245. /// <returns></returns>
  246. IEnumerable<T> FindList<T>(string strSql, Pagination pagination) where T : class;
  247. /// <summary>
  248. /// 查询列表(分页)
  249. /// </summary>
  250. /// <typeparam name="T">类型</typeparam>
  251. /// <param name="strSql">SQL语句</param>
  252. /// <param name="dbParameter">参数</param>
  253. /// <param name="pagination">分页数据</param>
  254. /// <returns></returns>
  255. IEnumerable<T> FindList<T>(string strSql, object dbParameter, Pagination pagination) where T : class;
  256. #endregion
  257. #region 数据源查询
  258. /// <summary>
  259. /// 查询数据
  260. /// </summary>
  261. /// <param name="strSql">sql语句</param>
  262. /// <returns></returns>
  263. DataTable FindTable(string strSql);
  264. /// <summary>
  265. /// 查询数据
  266. /// </summary>
  267. /// <param name="strSql">sql语句</param>
  268. /// <param name="dbParameter">参数</param>
  269. /// <returns></returns>
  270. DataTable FindTable(string strSql, object dbParameter);
  271. /// <summary>
  272. /// 查询列表(分页)
  273. /// </summary>
  274. /// <param name="strSql">sql语句</param>
  275. /// <param name="pagination">分页数据</param>
  276. /// <returns></returns>
  277. DataTable FindTable(string strSql, Pagination pagination);
  278. /// <summary>
  279. /// 查询列表(分页)
  280. /// </summary>
  281. /// <param name="strSql">sql语句</param>
  282. /// <param name="dbParameter">参数</param>
  283. /// <param name="pagination">分页数据</param>
  284. /// <returns></returns>
  285. DataTable FindTable(string strSql, object dbParameter, Pagination pagination);
  286. /// <summary>
  287. /// 获取查询对象
  288. /// </summary>
  289. /// <param name="strSql">SQL语句</param>
  290. /// <returns></returns>
  291. object FindObject(string strSql);
  292. /// <summary>
  293. /// 获取查询对象
  294. /// </summary>
  295. /// <param name="strSql">sql语句</param>
  296. /// <param name="dbParameter">参数</param>
  297. /// <returns></returns>
  298. object FindObject(string strSql, object dbParameter);
  299. #endregion
  300. #region 扩展方法
  301. /// <summary>
  302. /// 获取数据库表数据
  303. /// </summary>
  304. /// <typeparam name="T">反序列化类型</typeparam>
  305. /// <returns></returns>
  306. IEnumerable<T> GetDBTable<T>() where T : class, new();
  307. /// <summary>
  308. /// 获取数据库表字段数据
  309. /// </summary>
  310. /// <typeparam name="T">反序列化类型</typeparam>
  311. /// <param name="tableName">表名</param>
  312. /// <returns></returns>
  313. IEnumerable<T> GetDBTableFields<T>(string tableName) where T : class, new();
  314. #endregion
  315. }
  316. }