Repository.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430
  1. using Lottomat.Util.WebControl;
  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. namespace Lottomat.Data.Repository
  9. {
  10. /// <summary>
  11. /// 版 本 1.0
  12. /// Copyright (c) 2016-2017
  13. /// 创建人:赵轶
  14. /// 日 期:2015.10.10
  15. /// 描 述:定义仓储模型中的数据标准操作
  16. /// </summary>
  17. public class Repository : IRepository
  18. {
  19. #region 构造
  20. public IDatabase db;
  21. /// <summary>
  22. /// 仓储模型
  23. /// </summary>
  24. /// <param name="idatabase"></param>
  25. public Repository(IDatabase idatabase)
  26. {
  27. this.db = idatabase;
  28. }
  29. #endregion
  30. #region 事务提交
  31. /// <summary>
  32. /// 开始事务
  33. /// </summary>
  34. /// <returns></returns>
  35. public IRepository BeginTrans()
  36. {
  37. db.BeginTrans();
  38. return this;
  39. }
  40. /// <summary>
  41. /// 提交
  42. /// </summary>
  43. public void Commit()
  44. {
  45. db.Commit();
  46. }
  47. /// <summary>
  48. /// 回滚
  49. /// </summary>
  50. public void Rollback()
  51. {
  52. db.Rollback();
  53. }
  54. #endregion
  55. #region 执行 SQL 语句
  56. /// <summary>
  57. /// 执行T-SQL
  58. /// </summary>
  59. /// <param name="strSql">sql语句</param>
  60. /// <returns></returns>
  61. public int ExecuteBySql(string strSql)
  62. {
  63. return db.ExecuteBySql(strSql);
  64. }
  65. /// <summary>
  66. /// 执行T-SQL
  67. /// </summary>
  68. /// <param name="strSql">sql语句</param>
  69. /// <param name="dbParameter">DbCommand参数</param>
  70. /// <returns></returns>
  71. public int ExecuteBySql(string strSql, params DbParameter[] dbParameter)
  72. {
  73. return db.ExecuteBySql(strSql, dbParameter);
  74. }
  75. /// <summary>
  76. /// 执行存储过程
  77. /// </summary>
  78. /// <param name="procName">存储过程名称</param>
  79. /// <returns></returns>
  80. public int ExecuteByProc(string procName)
  81. {
  82. return db.ExecuteByProc(procName);
  83. }
  84. /// <summary>
  85. /// 执行存储过程
  86. /// </summary>
  87. /// <param name="procName">存储过程名称</param>
  88. /// <param name="dbParameter">DbCommand参数</param>
  89. /// <returns></returns>
  90. public int ExecuteByProc(string procName, params DbParameter[] dbParameter)
  91. {
  92. return db.ExecuteByProc(procName, dbParameter);
  93. }
  94. #endregion
  95. #region 对象实体 添加、修改、删除
  96. /// <summary>
  97. /// 插入一条数据
  98. /// </summary>
  99. /// <param name="entity">对象实体</param>
  100. /// <returns></returns>
  101. public int Insert<T>(T entity) where T : class
  102. {
  103. return db.Insert<T>(entity);
  104. }
  105. /// <summary>
  106. /// 批量插入数据
  107. /// </summary>
  108. /// <param name="entity">对象实体集合</param>
  109. /// <returns></returns>
  110. public int Insert<T>(List<T> entity) where T : class
  111. {
  112. return db.Insert<T>(entity);
  113. }
  114. /// <summary>
  115. /// 删除
  116. /// </summary>
  117. /// <returns></returns>
  118. public int Delete<T>() where T : class
  119. {
  120. return db.Delete<T>();
  121. }
  122. /// <summary>
  123. /// 删除一条数据
  124. /// </summary>
  125. /// <param name="entity">对象实体</param>
  126. /// <returns></returns>
  127. public int Delete<T>(T entity) where T : class
  128. {
  129. return db.Delete<T>(entity);
  130. }
  131. /// <summary>
  132. /// 批量删除
  133. /// </summary>
  134. /// <param name="entity">对象实体集合</param>
  135. /// <returns></returns>
  136. public int Delete<T>(List<T> entity) where T : class
  137. {
  138. return db.Delete<T>(entity);
  139. }
  140. /// <summary>
  141. /// 根据条件删除数据
  142. /// </summary>
  143. /// <param name="condition">条件</param>
  144. /// <returns></returns>
  145. public int Delete<T>(Expression<Func<T, bool>> condition) where T : class, new()
  146. {
  147. return db.Delete<T>(condition);
  148. }
  149. /// <summary>
  150. /// 根据主键删除一条数据
  151. /// </summary>
  152. /// <param name="keyValue">主键</param>
  153. /// <returns></returns>
  154. public int Delete<T>(object keyValue) where T : class
  155. {
  156. return db.Delete<T>(keyValue);
  157. }
  158. /// <summary>
  159. /// 根据主键批量删除一条数据
  160. /// </summary>
  161. /// <param name="keyValue">主键数组</param>
  162. /// <returns></returns>
  163. public int Delete<T>(object[] keyValue) where T : class
  164. {
  165. return db.Delete<T>(keyValue);
  166. }
  167. /// <summary>
  168. /// 根据属性删除
  169. /// </summary>
  170. /// <param name="propertyValue">属性值</param>
  171. /// <param name="propertyName">属性名</param>
  172. /// <returns></returns>
  173. public int Delete<T>(object propertyValue, string propertyName) where T : class
  174. {
  175. return db.Delete<T>(propertyValue, propertyName);
  176. }
  177. /// <summary>
  178. /// 更新一条数据
  179. /// </summary>
  180. /// <param name="entity">实体对象</param>
  181. /// <returns></returns>
  182. public int Update<T>(T entity) where T : class
  183. {
  184. return db.Update<T>(entity);
  185. }
  186. /// <summary>
  187. /// 批量更新
  188. /// </summary>
  189. /// <param name="entity">实体对象集合</param>
  190. /// <returns></returns>
  191. public int Update<T>(List<T> entity) where T : class
  192. {
  193. return db.Update<T>(entity);
  194. }
  195. /// <summary>
  196. /// 根据条件更新
  197. /// </summary>
  198. /// <param name="condition">条件</param>
  199. /// <returns></returns>
  200. public int Update<T>(Expression<Func<T, bool>> condition) where T : class, new()
  201. {
  202. return db.Update<T>(condition);
  203. }
  204. #endregion
  205. #region 对象实体 查询
  206. /// <summary>
  207. /// 根据主键获取一条数据
  208. /// </summary>
  209. /// <param name="keyValue">主键值</param>
  210. /// <returns></returns>
  211. public T FindEntity<T>(object keyValue) where T : class
  212. {
  213. return db.FindEntity<T>(keyValue);
  214. }
  215. /// <summary>
  216. /// 根据条件获取一条数据
  217. /// </summary>
  218. /// <param name="condition">条件</param>
  219. /// <returns></returns>
  220. public T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class, new()
  221. {
  222. return db.FindEntity<T>(condition);
  223. }
  224. /// <summary>
  225. /// 获取IQueryable对象
  226. /// </summary>
  227. /// <returns></returns>
  228. public IQueryable<T> IQueryable<T>() where T : class, new()
  229. {
  230. return db.IQueryable<T>();
  231. }
  232. /// <summary>
  233. /// 根据条件获取IQueryable对象
  234. /// </summary>
  235. /// <param name="condition"></param>
  236. /// <returns></returns>
  237. public IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class, new()
  238. {
  239. return db.IQueryable<T>(condition);
  240. }
  241. /// <summary>
  242. /// 获取一条数据,返回对象集合
  243. /// </summary>
  244. /// <typeparam name="T"></typeparam>
  245. /// <returns></returns>
  246. public IEnumerable<T> FindList<T>() where T : class, new()
  247. {
  248. return db.FindList<T>();
  249. }
  250. /// <summary>
  251. /// 根据条件获取一条数据,返回对象集合
  252. /// </summary>
  253. /// <param name="condition">条件</param>
  254. /// <returns></returns>
  255. public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new()
  256. {
  257. return db.FindList<T>(condition);
  258. }
  259. /// <summary>
  260. /// 根据T-SQL语句获取一条数据,返回对象集合
  261. /// </summary>
  262. /// <param name="strSql">T-SQL语句</param>
  263. /// <returns></returns>
  264. public IEnumerable<T> FindList<T>(string strSql) where T : class
  265. {
  266. return db.FindList<T>(strSql);
  267. }
  268. /// <summary>
  269. /// 根据T-SQL语句获取一条数据,返回对象集合
  270. /// </summary>
  271. /// <param name="strSql">T-SQL语句</param>
  272. /// <param name="dbParameter">DbCommand参数</param>
  273. /// <returns></returns>
  274. public IEnumerable<T> FindList<T>(string strSql, DbParameter[] dbParameter) where T : class
  275. {
  276. return db.FindList<T>(strSql, dbParameter);
  277. }
  278. /// <summary>
  279. /// 根据分页参数获取一条数据,返回对象集合
  280. /// </summary>
  281. /// <param name="pagination">分页参数</param>
  282. /// <returns></returns>
  283. public IEnumerable<T> FindList<T>(Pagination pagination) where T : class, new()
  284. {
  285. int total = pagination.records;
  286. var data = db.FindList<T>(pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  287. pagination.records = total;
  288. return data;
  289. }
  290. /// <summary>
  291. /// 根据分页参数、条件获取一条数据,返回对象集合
  292. /// </summary>
  293. /// <param name="condition">条件</param>
  294. /// <param name="pagination">分页参数</param>
  295. /// <returns></returns>
  296. public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new()
  297. {
  298. int total = pagination.records;
  299. var data = db.FindList<T>(condition, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  300. pagination.records = total;
  301. return data;
  302. }
  303. /// <summary>
  304. /// 根据分页参数获取一条数据,返回对象集合
  305. /// </summary>
  306. /// <param name="strSql">T-SQL语句</param>
  307. /// <param name="pagination">分页参数</param>
  308. /// <returns></returns>
  309. public IEnumerable<T> FindList<T>(string strSql, Pagination pagination) where T : class
  310. {
  311. int total = pagination.records;
  312. var data = db.FindList<T>(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  313. pagination.records = total;
  314. return data;
  315. }
  316. /// <summary>
  317. /// 根据分页参数获取一条数据,返回对象集合
  318. /// </summary>
  319. /// <param name="strSql">T-SQL语句</param>
  320. /// <param name="dbParameter">DbCommand参数</param>
  321. /// <param name="pagination">分页参数</param>
  322. /// <returns></returns>
  323. public IEnumerable<T> FindList<T>(string strSql, DbParameter[] dbParameter, Pagination pagination) where T : class
  324. {
  325. int total = pagination.records;
  326. var data = db.FindList<T>(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  327. pagination.records = total;
  328. return data;
  329. }
  330. #endregion
  331. #region 数据源 查询
  332. /// <summary>
  333. /// 返回DataTable
  334. /// </summary>
  335. /// <param name="strSql">T-SQL语句</param>
  336. /// <returns></returns>
  337. public DataTable FindTable(string strSql)
  338. {
  339. return db.FindTable(strSql);
  340. }
  341. /// <summary>
  342. /// 返回DataTable
  343. /// </summary>
  344. /// <param name="strSql">T-SQL语句</param>
  345. /// <param name="dbParameter">DbCommand参数</param>
  346. /// <returns></returns>
  347. public DataTable FindTable(string strSql, DbParameter[] dbParameter)
  348. {
  349. return db.FindTable(strSql, dbParameter);
  350. }
  351. /// <summary>
  352. /// 返回DataTable
  353. /// </summary>
  354. /// <param name="strSql">T-SQL语句</param>
  355. /// <param name="pagination">分页参数</param>
  356. /// <returns></returns>
  357. public DataTable FindTable(string strSql, Pagination pagination)
  358. {
  359. int total = pagination.records;
  360. var data = db.FindTable(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  361. pagination.records = total;
  362. return data;
  363. }
  364. /// <summary>
  365. /// 返回DataTable
  366. /// </summary>
  367. /// <param name="strSql">T-SQL语句</param>
  368. /// <param name="dbParameter">DbCommand参数</param>
  369. /// <param name="pagination">分页参数</param>
  370. /// <returns></returns>
  371. public DataTable FindTable(string strSql, DbParameter[] dbParameter, Pagination pagination)
  372. {
  373. int total = pagination.records;
  374. var data = db.FindTable(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  375. pagination.records = total;
  376. return data;
  377. }
  378. /// <summary>
  379. /// 获取分页DataTable
  380. /// </summary>
  381. /// <param name="strSql">T-SQL语句</param>
  382. /// <param name="orderField">排序字段</param>
  383. /// <param name="isAsc">是否升序</param>
  384. /// <param name="pageSize">每页条数</param>
  385. /// <param name="pageIndex">索引</param>
  386. /// <param name="total">总记录</param>
  387. /// <returns></returns>
  388. public DataTable FindTable(string strSql, string orderField, bool isAsc, int pageSize, int pageIndex, out int total)
  389. {
  390. DataTable data = db.FindTable(strSql, orderField, isAsc, pageSize, pageIndex, out int totalRows);
  391. total = totalRows;
  392. return data;
  393. }
  394. /// <summary>
  395. /// 返回Object
  396. /// </summary>
  397. /// <param name="strSql">T-SQL语句</param>
  398. /// <returns></returns>
  399. public object FindObject(string strSql)
  400. {
  401. return db.FindObject(strSql);
  402. }
  403. /// <summary>
  404. /// 返回Object
  405. /// </summary>
  406. /// <param name="strSql">T-SQL语句</param>
  407. /// <param name="dbParameter">DbCommand参数</param>
  408. /// <returns></returns>
  409. public object FindObject(string strSql, DbParameter[] dbParameter)
  410. {
  411. return db.FindObject(strSql, dbParameter);
  412. }
  413. #endregion
  414. }
  415. }