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.
 
 
 
 
 
 

781 lines
29 KiB

  1. using Dapper;
  2. using Learun.Util;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Data.Common;
  7. using System.Linq;
  8. using System.Linq.Expressions;
  9. using System.Text.RegularExpressions;
  10. using System.Threading.Tasks;
  11. namespace Learun.DataBase.Repository
  12. {
  13. /// <summary>
  14. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  15. /// Copyright (c) 2013-2018 北京泉江科技有限公司
  16. /// 创建人:陈彬彬
  17. /// 日 期:2017.03.04
  18. /// 描 述:定义仓储模型中的数据标准操作
  19. /// </summary>
  20. public class Repository : IRepository
  21. {
  22. private DbWhere dbWhere = (DbWhere)WebHelper.GetHttpItems("DataAhthorCondition");
  23. #region 构造
  24. /// <summary>
  25. /// 数据库操作接口
  26. /// </summary>
  27. public IDatabase db;
  28. /// <summary>
  29. /// 构造函数
  30. /// </summary>
  31. /// <param name="idatabase"></param>
  32. public Repository(IDatabase idatabase)
  33. {
  34. this.db = idatabase;
  35. }
  36. #endregion
  37. #region 连接信息
  38. /// <summary>
  39. /// 获取连接上下文
  40. /// </summary>
  41. /// <returns></returns>
  42. public DbConnection getDbConnection()
  43. {
  44. return db.getDbConnection();
  45. }
  46. #endregion
  47. #region 事物提交
  48. /// <summary>
  49. /// 开始事务
  50. /// </summary>
  51. /// <returns></returns>
  52. public IRepository BeginTrans()
  53. {
  54. db.BeginTrans();
  55. return this;
  56. }
  57. /// <summary>
  58. /// 提交
  59. /// </summary>
  60. public void Commit()
  61. {
  62. db.Commit();
  63. }
  64. /// <summary>
  65. /// 回滚
  66. /// </summary>
  67. public void Rollback()
  68. {
  69. db.Rollback();
  70. }
  71. #endregion
  72. #region 执行 SQL 语句
  73. public Task<int> ExecuteAsyncBySql(string strSql)
  74. {
  75. return db.ExecuteAsyncBySql(strSql);
  76. }
  77. /// <summary>
  78. /// 执行sql语句
  79. /// </summary>
  80. /// <param name="strSql">sql语句</param>
  81. /// <returns></returns>
  82. public int ExecuteBySql(string strSql)
  83. {
  84. return db.ExecuteBySql(strSql);
  85. }
  86. /// <summary>
  87. /// 执行sql语句
  88. /// </summary>
  89. /// <param name="strSql">sql语句</param>
  90. /// <param name="dbParameter">参数</param>
  91. /// <returns></returns>
  92. public int ExecuteBySql(string strSql, object dbParameter)
  93. {
  94. return db.ExecuteBySql(strSql, dbParameter);
  95. }
  96. /// <summary>
  97. /// 执行存储过程
  98. /// </summary>
  99. /// <param name="procName">存储过程名称</param>
  100. /// <returns></returns>
  101. public int ExecuteByProc(string procName)
  102. {
  103. return db.ExecuteByProc(procName);
  104. }
  105. /// <summary>
  106. /// 执行存储过程
  107. /// </summary>
  108. /// <param name="procName">存储过程名称</param>
  109. /// <param name="dbParameter">参数</param>
  110. /// <returns></returns>
  111. public int ExecuteByProc(string procName, object dbParameter)
  112. {
  113. return db.ExecuteByProc(procName, dbParameter);
  114. }
  115. /// <summary>
  116. /// 执行存储过程
  117. /// </summary>
  118. /// <param name="procName">存储过程名称</param>
  119. /// <returns></returns>
  120. public T ExecuteByProc<T>(string procName) where T : class
  121. {
  122. return db.ExecuteByProc<T>(procName);
  123. }
  124. /// <summary>
  125. /// 执行存储过程
  126. /// </summary>
  127. /// <param name="procName">存储过程名称</param>
  128. /// <param name="dbParameter">参数</param>
  129. /// <returns></returns>
  130. public T ExecuteByProc<T>(string procName, object dbParameter) where T : class
  131. {
  132. return db.ExecuteByProc<T>(procName, dbParameter);
  133. }
  134. /// <summary>
  135. /// 执行存储过程
  136. /// </summary>
  137. /// <param name="procName">存储过程名称</param>
  138. /// <returns></returns>
  139. public IEnumerable<T> QueryByProc<T>(string procName) where T : class
  140. {
  141. return db.QueryByProc<T>(procName);
  142. }
  143. /// <summary>
  144. /// 执行存储过程
  145. /// </summary>
  146. /// <param name="procName">存储过程名称</param>
  147. /// <param name="dbParameter">参数</param>
  148. /// <returns></returns>
  149. public IEnumerable<T> QueryByProc<T>(string procName, object dbParameter) where T : class
  150. {
  151. return db.QueryByProc<T>(procName, dbParameter);
  152. }
  153. #endregion
  154. #region 对象实体 添加、修改、删除
  155. /// <summary>
  156. /// 插入实体数据
  157. /// </summary>
  158. /// <typeparam name="T">类型</typeparam>
  159. /// <param name="entity">实体数据</param>
  160. /// <returns></returns>
  161. public int Insert<T>(T entity) where T : class
  162. {
  163. return db.Insert<T>(entity);
  164. }
  165. public async Task<int> InsertAsync<T>(List<T> entity) where T : class
  166. {
  167. return await db.InsertAsync<T>(entity);
  168. }
  169. /// <summary>
  170. /// 批量插入实体数据
  171. /// </summary>
  172. /// <typeparam name="T">类型</typeparam>
  173. /// <param name="entities">实体数据列表</param>
  174. /// <returns></returns>
  175. public int Insert<T>(List<T> entity) where T : class
  176. {
  177. return db.Insert<T>(entity);
  178. }
  179. /// <summary>
  180. /// 删除实体数据
  181. /// </summary>
  182. /// <typeparam name="T">类型</typeparam>
  183. /// <param name="entity">实体数据(需要主键赋值)</param>
  184. /// <returns></returns>
  185. public int Delete<T>(T entity) where T : class
  186. {
  187. return db.Delete<T>(entity);
  188. }
  189. /// <summary>
  190. /// 批量删除实体数据
  191. /// </summary>
  192. /// <typeparam name="T">类型</typeparam>
  193. /// <param name="entities">实体数据列表</param>
  194. /// <returns></returns>
  195. public int Delete<T>(List<T> entity) where T : class
  196. {
  197. return db.Delete<T>(entity);
  198. }
  199. /// <summary>
  200. /// 删除表数据(根据Lambda表达式)
  201. /// </summary>
  202. /// <typeparam name="T"></typeparam>
  203. /// <param name="condition"></param>
  204. /// <returns></returns>
  205. public int Delete<T>(Expression<Func<T, bool>> condition) where T : class, new()
  206. {
  207. return db.Delete<T>(condition);
  208. }
  209. /// <summary>
  210. /// 更新实体数据
  211. /// </summary>
  212. /// <typeparam name="T">类型</typeparam>
  213. /// <param name="entity">实体数据</param>
  214. /// <returns></returns>
  215. public int Update<T>(T entity) where T : class
  216. {
  217. return db.Update<T>(entity);
  218. }
  219. /// <summary>
  220. /// 更新实体数据
  221. /// </summary>
  222. /// <typeparam name="T">类型</typeparam>
  223. /// <param name="entity">实体数据</param>
  224. /// <returns></returns>
  225. public int UpdateEx<T>(T entity) where T : class
  226. {
  227. return db.UpdateEx<T>(entity);
  228. }
  229. /// <summary>
  230. /// 批量更新实体数据
  231. /// </summary>
  232. /// <typeparam name="T">类型</typeparam>
  233. /// <param name="entities">实体数据列表</param>
  234. /// <returns></returns>
  235. public int Update<T>(List<T> entity) where T : class
  236. {
  237. return db.Update<T>(entity);
  238. }
  239. #endregion
  240. #region 对象实体 查询
  241. /// <summary>
  242. /// 查找一个实体根据主键
  243. /// </summary>
  244. /// <typeparam name="T">类型</typeparam>
  245. /// <param name="KeyValue">主键</param>
  246. /// <returns></returns>
  247. public T FindEntity<T>(object keyValue) where T : class
  248. {
  249. return db.FindEntity<T>(keyValue);
  250. }
  251. /// <summary>
  252. /// 查找一个实体(根据表达式)
  253. /// </summary>
  254. /// <typeparam name="T">类型</typeparam>
  255. /// <param name="condition">表达式</param>
  256. /// <returns></returns>
  257. public T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class, new()
  258. {
  259. return db.FindEntity<T>(condition);
  260. }
  261. /// <summary>
  262. /// 查找一个实体(根据sql)
  263. /// </summary>
  264. /// <typeparam name="T">类型</typeparam>
  265. /// <param name="strSql">sql语句</param>
  266. /// <param name="dbParameter">参数</param>
  267. /// <returns></returns>
  268. public T FindEntity<T>(string strSql, object dbParameter) where T : class, new()
  269. {
  270. if (dbWhere != null)
  271. {
  272. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  273. if (orderIndex > 0)
  274. {
  275. strSql = strSql.Substring(0, orderIndex);
  276. string orderString = strSql.Substring(orderIndex);
  277. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  278. }
  279. else
  280. {
  281. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  282. }
  283. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  284. dynamicParameters.AddDynamicParams(dbParameter);
  285. return db.FindEntity<T>(strSql, dynamicParameters);
  286. }
  287. else
  288. {
  289. return db.FindEntity<T>(strSql, dbParameter);
  290. }
  291. }
  292. /// <summary>
  293. /// 获取IQueryable表达式
  294. /// </summary>
  295. /// <typeparam name="T">类型</typeparam>
  296. /// <returns></returns>
  297. public IQueryable<T> IQueryable<T>() where T : class, new()
  298. {
  299. return db.IQueryable<T>();
  300. }
  301. /// <summary>
  302. /// 获取IQueryable表达式(根据表达式)
  303. /// </summary>
  304. /// <typeparam name="T">类型</typeparam>
  305. /// <param name="condition">表达式</param>
  306. /// <returns></returns>
  307. public IQueryable<T> IQueryable<T>(Expression<Func<T, bool>> condition) where T : class, new()
  308. {
  309. return db.IQueryable<T>(condition);
  310. }
  311. /// <summary>
  312. /// 查询列表(获取表所有数据)
  313. /// </summary>
  314. /// <typeparam name="T">类型</typeparam>
  315. /// <returns></returns>
  316. public IEnumerable<T> FindList<T>() where T : class, new()
  317. {
  318. return db.FindList<T>();
  319. }
  320. public async Task<IEnumerable<T>> FindListAsync<T>(string strSql, object dbParameter) where T : class
  321. {
  322. return await db.FindListAsync<T>(strSql, dbParameter);
  323. }
  324. public async Task<IEnumerable<T>> FindListAsync<T>(string strSql) where T : class
  325. {
  326. return await db.FindListAsync<T>(strSql);
  327. }
  328. public async Task<IEnumerable<T>> FindListAsync<T>() where T : class, new()
  329. {
  330. return await db.FindListAsync<T>();
  331. }
  332. /// <summary>
  333. /// 查询列表根据sql语句
  334. /// </summary>
  335. /// <typeparam name="T">类型</typeparam>
  336. /// <param name="strSql">sql语句</param>
  337. /// <returns></returns>
  338. public IEnumerable<T> FindList<T>(string strSql) where T : class
  339. {
  340. if (dbWhere != null)
  341. {
  342. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  343. if (orderIndex > 0)
  344. {
  345. strSql = strSql.Substring(0, orderIndex);
  346. string orderString = strSql.Substring(orderIndex);
  347. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  348. }
  349. else
  350. {
  351. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  352. }
  353. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  354. return db.FindList<T>(strSql, dynamicParameters);
  355. }
  356. else
  357. {
  358. return db.FindList<T>(strSql);
  359. }
  360. }
  361. /// <summary>
  362. /// 查询列表根据sql语句(带参数)
  363. /// </summary>
  364. /// <typeparam name="T">类型</typeparam>
  365. /// <param name="strSql">sql语句</param>
  366. /// <param name="dbParameter">参数</param>
  367. /// <returns></returns>
  368. public IEnumerable<T> FindList<T>(string strSql, object dbParameter) where T : class
  369. {
  370. if (dbWhere != null)
  371. {
  372. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  373. if (orderIndex > 0)
  374. {
  375. strSql = strSql.Substring(0, orderIndex);
  376. string orderString = strSql.Substring(orderIndex);
  377. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  378. }
  379. else
  380. {
  381. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  382. }
  383. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  384. dynamicParameters.AddDynamicParams(dbParameter);
  385. return db.FindList<T>(strSql, dynamicParameters);
  386. }
  387. else
  388. {
  389. return db.FindList<T>(strSql, dbParameter);
  390. }
  391. }
  392. /// <summary>
  393. /// 查询列表(分页)
  394. /// </summary>
  395. /// <typeparam name="T">类型</typeparam>
  396. /// <param name="pagination">分页数据</param>
  397. /// <returns></returns>
  398. public IEnumerable<T> FindList<T>(Pagination pagination) where T : class, new()
  399. {
  400. int total = pagination.records;
  401. if (string.IsNullOrEmpty(pagination.sidx))
  402. {
  403. pagination.sidx = "";
  404. pagination.sord = "asc";
  405. }
  406. var data = db.FindList<T>(pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  407. pagination.records = total;
  408. return data;
  409. }
  410. public IEnumerable<T> FindList<T>(List<T> data, Pagination pagination) where T : class, new()
  411. {
  412. var isAsc = pagination.sord.ToLower() == "asc" ? true : false;
  413. var pageSize = pagination.rows;
  414. var pageIndex = pagination.page;
  415. string[] _order = pagination.sidx.Split(',');
  416. MethodCallExpression resultExp = null;
  417. var tempData = data.AsQueryable();
  418. foreach (string item in _order)
  419. {
  420. if (!string.IsNullOrEmpty(item))
  421. {
  422. string _orderPart = item;
  423. _orderPart = Regex.Replace(_orderPart, @"\s+", " ");
  424. string[] _orderArry = _orderPart.Split(' ');
  425. string _orderField = _orderArry[0];
  426. bool sort = isAsc;
  427. if (_orderArry.Length == 2)
  428. {
  429. isAsc = _orderArry[1].ToUpper() == "ASC" ? true : false;
  430. }
  431. var parameter = Expression.Parameter(typeof(T), "t");
  432. var property = typeof(T).GetProperty(_orderField);
  433. var propertyAccess = Expression.MakeMemberAccess(parameter, property);
  434. var orderByExp = Expression.Lambda(propertyAccess, parameter);
  435. }
  436. }
  437. pagination.records = tempData.Count();
  438. tempData = tempData.Skip<T>(pageSize * (pageIndex - 1)).Take<T>(pageSize).AsQueryable();
  439. return tempData.ToList();
  440. }
  441. /// <summary>
  442. /// 查询列表(分页)
  443. /// </summary>
  444. /// <typeparam name="T">类型</typeparam>
  445. /// <param name="condition">表达式</param>
  446. /// <param name="pagination">分页数据</param>
  447. /// <returns></returns>
  448. public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new()
  449. {
  450. int total = pagination.records;
  451. if (string.IsNullOrEmpty(pagination.sidx))
  452. {
  453. pagination.sidx = "";
  454. pagination.sord = "asc";
  455. }
  456. var data = db.FindList<T>(condition, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  457. pagination.records = total;
  458. return data;
  459. }
  460. /// <summary>
  461. /// 查询数据
  462. /// </summary>
  463. /// <typeparam name="T">类型</typeparam>
  464. /// <param name="condition">表达式</param>
  465. /// <returns></returns>
  466. public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new()
  467. {
  468. return db.FindList<T>(condition);
  469. }
  470. /// <summary>
  471. /// 查询列表(分页)
  472. /// </summary>
  473. /// <typeparam name="T">类型</typeparam>
  474. /// <param name="strSql">SQL语句</param>
  475. /// <param name="pagination">分页数据</param>
  476. /// <returns></returns>
  477. public IEnumerable<T> FindList<T>(string strSql, Pagination pagination) where T : class
  478. {
  479. int total = pagination.records;
  480. if (string.IsNullOrEmpty(pagination.sidx))
  481. {
  482. pagination.sidx = "";
  483. pagination.sord = "asc";
  484. }
  485. if (dbWhere != null)
  486. {
  487. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  488. if (orderIndex > 0)
  489. {
  490. strSql = strSql.Substring(0, orderIndex);
  491. string orderString = strSql.Substring(orderIndex);
  492. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  493. }
  494. else
  495. {
  496. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  497. }
  498. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  499. var data = db.FindList<T>(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  500. pagination.records = total;
  501. return data;
  502. }
  503. else
  504. {
  505. var data = db.FindList<T>(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  506. pagination.records = total;
  507. return data;
  508. }
  509. }
  510. /// <summary>
  511. /// 查询列表(分页)
  512. /// </summary>
  513. /// <typeparam name="T">类型</typeparam>
  514. /// <param name="strSql">SQL语句</param>
  515. /// <param name="dbParameter">参数</param>
  516. /// <param name="pagination">分页数据</param>
  517. /// <returns></returns>
  518. public IEnumerable<T> FindList<T>(string strSql, object dbParameter, Pagination pagination) where T : class
  519. {
  520. int total = pagination.records;
  521. if (string.IsNullOrEmpty(pagination.sidx))
  522. {
  523. pagination.sidx = "";
  524. pagination.sord = "asc";
  525. }
  526. if (dbWhere != null)
  527. {
  528. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  529. if (orderIndex > 0)
  530. {
  531. strSql = strSql.Substring(0, orderIndex);
  532. string orderString = strSql.Substring(orderIndex);
  533. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  534. }
  535. else
  536. {
  537. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  538. }
  539. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  540. dynamicParameters.AddDynamicParams(dbParameter);
  541. var data = db.FindList<T>(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  542. pagination.records = total;
  543. return data;
  544. }
  545. else
  546. {
  547. var data = db.FindList<T>(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  548. pagination.records = total;
  549. return data;
  550. }
  551. }
  552. #endregion
  553. #region 数据源 查询
  554. /// <summary>
  555. /// 查询数据
  556. /// </summary>
  557. /// <param name="strSql">sql语句</param>
  558. /// <returns></returns>
  559. public DataTable FindTable(string strSql)
  560. {
  561. if (dbWhere != null)
  562. {
  563. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  564. if (orderIndex > 0)
  565. {
  566. strSql = strSql.Substring(0, orderIndex);
  567. string orderString = strSql.Substring(orderIndex);
  568. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  569. }
  570. else
  571. {
  572. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  573. }
  574. return db.FindTable(strSql, SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters));
  575. }
  576. else
  577. {
  578. return db.FindTable(strSql);
  579. }
  580. }
  581. /// <summary>
  582. /// 查询数据
  583. /// </summary>
  584. /// <param name="strSql">sql语句</param>
  585. /// <param name="dbParameter">参数</param>
  586. /// <returns></returns>
  587. public DataTable FindTable(string strSql, object dbParameter)
  588. {
  589. if (dbWhere != null)
  590. {
  591. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  592. if (orderIndex > 0)
  593. {
  594. strSql = strSql.Substring(0, orderIndex);
  595. string orderString = strSql.Substring(orderIndex);
  596. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  597. }
  598. else
  599. {
  600. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  601. }
  602. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  603. dynamicParameters.AddDynamicParams(dbParameter);
  604. return db.FindTable(strSql, dynamicParameters);
  605. }
  606. else
  607. {
  608. return db.FindTable(strSql, dbParameter);
  609. }
  610. }
  611. /// <summary>
  612. /// 查询列表(分页)
  613. /// </summary>
  614. /// <param name="strSql">sql语句</param>
  615. /// <param name="pagination">分页数据</param>
  616. /// <returns></returns>
  617. public DataTable FindTable(string strSql, Pagination pagination)
  618. {
  619. int total = pagination.records;
  620. DataTable data;
  621. if (dbWhere != null)
  622. {
  623. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  624. if (orderIndex > 0)
  625. {
  626. strSql = strSql.Substring(0, orderIndex);
  627. string orderString = strSql.Substring(orderIndex);
  628. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  629. }
  630. else
  631. {
  632. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  633. }
  634. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  635. data = db.FindTable(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  636. }
  637. else
  638. {
  639. data = db.FindTable(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  640. }
  641. pagination.records = total;
  642. return data;
  643. }
  644. /// <summary>
  645. /// 查询列表(分页)
  646. /// </summary>
  647. /// <param name="strSql">sql语句</param>
  648. /// <param name="dbParameter">参数</param>
  649. /// <param name="pagination">分页数据</param>
  650. /// <returns></returns>
  651. public DataTable FindTable(string strSql, object dbParameter, Pagination pagination)
  652. {
  653. int total = pagination.records;
  654. DataTable data;
  655. if (dbWhere != null)
  656. {
  657. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  658. if (orderIndex > 0)
  659. {
  660. strSql = strSql.Substring(0, orderIndex);
  661. string orderString = strSql.Substring(orderIndex);
  662. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  663. }
  664. else
  665. {
  666. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  667. }
  668. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  669. dynamicParameters.AddDynamicParams(dbParameter);
  670. data = db.FindTable(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  671. }
  672. else
  673. {
  674. data = db.FindTable(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  675. }
  676. pagination.records = total;
  677. return data;
  678. }
  679. /// <summary>
  680. /// 获取查询对象
  681. /// </summary>
  682. /// <param name="strSql">SQL语句</param>
  683. /// <returns></returns>
  684. public object FindObject(string strSql)
  685. {
  686. if (dbWhere != null)
  687. {
  688. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  689. if (orderIndex > 0)
  690. {
  691. strSql = strSql.Substring(0, orderIndex);
  692. string orderString = strSql.Substring(orderIndex);
  693. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  694. }
  695. else
  696. {
  697. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  698. }
  699. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  700. return db.FindObject(strSql, dynamicParameters);
  701. }
  702. else
  703. {
  704. return db.FindObject(strSql);
  705. }
  706. }
  707. /// <summary>
  708. /// 获取查询对象
  709. /// </summary>
  710. /// <param name="strSql">sql语句</param>
  711. /// <param name="dbParameter">参数</param>
  712. /// <returns></returns>
  713. public object FindObject(string strSql, object dbParameter)
  714. {
  715. if (dbWhere != null)
  716. {
  717. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  718. if (orderIndex > 0)
  719. {
  720. strSql = strSql.Substring(0, orderIndex);
  721. string orderString = strSql.Substring(orderIndex);
  722. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  723. }
  724. else
  725. {
  726. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  727. }
  728. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  729. dynamicParameters.AddDynamicParams(dbParameter);
  730. return db.FindObject(strSql, dynamicParameters);
  731. }
  732. else
  733. {
  734. return db.FindObject(strSql, dbParameter);
  735. }
  736. }
  737. #endregion
  738. #region 扩展方法
  739. /// <summary>
  740. /// 获取数据库表数据
  741. /// </summary>
  742. /// <typeparam name="T">反序列化类型</typeparam>
  743. /// <returns></returns>
  744. public IEnumerable<T> GetDBTable<T>() where T : class, new()
  745. {
  746. return db.GetDBTable<T>();
  747. }
  748. /// <summary>
  749. /// 获取数据库表字段数据
  750. /// </summary>
  751. /// <typeparam name="T">反序列化类型</typeparam>
  752. /// <param name="tableName">表名</param>
  753. /// <returns></returns>
  754. public IEnumerable<T> GetDBTableFields<T>(string tableName) where T : class, new()
  755. {
  756. return db.GetDBTableFields<T>(tableName);
  757. }
  758. #endregion
  759. }
  760. }