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.
 
 
 
 
 
 

359 lines
14 KiB

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