25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

825 satır
32 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. resultExp = Expression.Call(typeof(Queryable), isAsc ? "OrderBy" : "OrderByDescending", new Type[] { typeof(T), property.PropertyType }, tempData.Expression, Expression.Quote(orderByExp));
  436. }
  437. }
  438. if (resultExp != null)
  439. {
  440. tempData = tempData.Provider.CreateQuery<T>(resultExp);
  441. }
  442. pagination.records = tempData.Count();
  443. tempData = tempData.Skip<T>(pageSize * (pageIndex - 1)).Take<T>(pageSize).AsQueryable();
  444. return tempData.ToList();
  445. }
  446. public IEnumerable<T> FindList<T>(List<T> data, Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new()
  447. {
  448. var isAsc = pagination.sord.ToLower() == "asc" ? true : false;
  449. var pageSize = pagination.rows;
  450. var pageIndex = pagination.page;
  451. string[] _order = pagination.sidx.Split(',');
  452. MethodCallExpression resultExp = null;
  453. var tempData = data.AsQueryable().Where(condition);
  454. foreach (string item in _order)
  455. {
  456. if (!string.IsNullOrEmpty(item))
  457. {
  458. string _orderPart = item;
  459. _orderPart = Regex.Replace(_orderPart, @"\s+", " ");
  460. string[] _orderArry = _orderPart.Split(' ');
  461. string _orderField = _orderArry[0];
  462. bool sort = isAsc;
  463. if (_orderArry.Length == 2)
  464. {
  465. isAsc = _orderArry[1].ToUpper() == "ASC" ? true : false;
  466. }
  467. var parameter = Expression.Parameter(typeof(T), "t");
  468. var property = typeof(T).GetProperty(_orderField);
  469. var propertyAccess = Expression.MakeMemberAccess(parameter, property);
  470. var orderByExp = Expression.Lambda(propertyAccess, parameter);
  471. resultExp = Expression.Call(typeof(Queryable), isAsc ? "OrderBy" : "OrderByDescending", new Type[] { typeof(T), property.PropertyType }, tempData.Expression, Expression.Quote(orderByExp));
  472. }
  473. }
  474. if (resultExp != null)
  475. {
  476. tempData = tempData.Provider.CreateQuery<T>(resultExp);
  477. }
  478. pagination.records = tempData.Count();
  479. tempData = tempData.Skip<T>(pageSize * (pageIndex - 1)).Take<T>(pageSize).AsQueryable();
  480. return tempData.ToList();
  481. }
  482. /// <summary>
  483. /// 查询列表(分页)
  484. /// </summary>
  485. /// <typeparam name="T">类型</typeparam>
  486. /// <param name="condition">表达式</param>
  487. /// <param name="pagination">分页数据</param>
  488. /// <returns></returns>
  489. public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition, Pagination pagination) where T : class, new()
  490. {
  491. int total = pagination.records;
  492. if (string.IsNullOrEmpty(pagination.sidx))
  493. {
  494. pagination.sidx = "";
  495. pagination.sord = "asc";
  496. }
  497. var data = db.FindList<T>(condition, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  498. pagination.records = total;
  499. return data;
  500. }
  501. /// <summary>
  502. /// 查询数据
  503. /// </summary>
  504. /// <typeparam name="T">类型</typeparam>
  505. /// <param name="condition">表达式</param>
  506. /// <returns></returns>
  507. public IEnumerable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new()
  508. {
  509. return db.FindList<T>(condition);
  510. }
  511. /// <summary>
  512. /// 查询列表(分页)
  513. /// </summary>
  514. /// <typeparam name="T">类型</typeparam>
  515. /// <param name="strSql">SQL语句</param>
  516. /// <param name="pagination">分页数据</param>
  517. /// <returns></returns>
  518. public IEnumerable<T> FindList<T>(string strSql, 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. var data = db.FindList<T>(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  541. pagination.records = total;
  542. return data;
  543. }
  544. else
  545. {
  546. var data = db.FindList<T>(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  547. pagination.records = total;
  548. return data;
  549. }
  550. }
  551. /// <summary>
  552. /// 查询列表(分页)
  553. /// </summary>
  554. /// <typeparam name="T">类型</typeparam>
  555. /// <param name="strSql">SQL语句</param>
  556. /// <param name="dbParameter">参数</param>
  557. /// <param name="pagination">分页数据</param>
  558. /// <returns></returns>
  559. public IEnumerable<T> FindList<T>(string strSql, object dbParameter, Pagination pagination) where T : class
  560. {
  561. int total = pagination.records;
  562. if (string.IsNullOrEmpty(pagination.sidx))
  563. {
  564. pagination.sidx = "";
  565. pagination.sord = "asc";
  566. }
  567. if (dbWhere != null)
  568. {
  569. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  570. if (orderIndex > 0)
  571. {
  572. strSql = strSql.Substring(0, orderIndex);
  573. string orderString = strSql.Substring(orderIndex);
  574. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  575. }
  576. else
  577. {
  578. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  579. }
  580. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  581. dynamicParameters.AddDynamicParams(dbParameter);
  582. var data = db.FindList<T>(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  583. pagination.records = total;
  584. return data;
  585. }
  586. else
  587. {
  588. var data = db.FindList<T>(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  589. pagination.records = total;
  590. return data;
  591. }
  592. }
  593. #endregion
  594. #region 数据源 查询
  595. /// <summary>
  596. /// 查询数据
  597. /// </summary>
  598. /// <param name="strSql">sql语句</param>
  599. /// <returns></returns>
  600. public DataTable FindTable(string strSql)
  601. {
  602. if (dbWhere != null)
  603. {
  604. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  605. if (orderIndex > 0)
  606. {
  607. strSql = strSql.Substring(0, orderIndex);
  608. string orderString = strSql.Substring(orderIndex);
  609. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  610. }
  611. else
  612. {
  613. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  614. }
  615. return db.FindTable(strSql, SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters));
  616. }
  617. else
  618. {
  619. return db.FindTable(strSql);
  620. }
  621. }
  622. /// <summary>
  623. /// 查询数据
  624. /// </summary>
  625. /// <param name="strSql">sql语句</param>
  626. /// <param name="dbParameter">参数</param>
  627. /// <returns></returns>
  628. public DataTable FindTable(string strSql, object dbParameter)
  629. {
  630. if (dbWhere != null)
  631. {
  632. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  633. if (orderIndex > 0)
  634. {
  635. strSql = strSql.Substring(0, orderIndex);
  636. string orderString = strSql.Substring(orderIndex);
  637. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  638. }
  639. else
  640. {
  641. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  642. }
  643. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  644. dynamicParameters.AddDynamicParams(dbParameter);
  645. return db.FindTable(strSql, dynamicParameters);
  646. }
  647. else
  648. {
  649. return db.FindTable(strSql, dbParameter);
  650. }
  651. }
  652. /// <summary>
  653. /// 查询列表(分页)
  654. /// </summary>
  655. /// <param name="strSql">sql语句</param>
  656. /// <param name="pagination">分页数据</param>
  657. /// <returns></returns>
  658. public DataTable FindTable(string strSql, Pagination pagination)
  659. {
  660. int total = pagination.records;
  661. DataTable data;
  662. if (dbWhere != null)
  663. {
  664. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  665. if (orderIndex > 0)
  666. {
  667. strSql = strSql.Substring(0, orderIndex);
  668. string orderString = strSql.Substring(orderIndex);
  669. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  670. }
  671. else
  672. {
  673. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  674. }
  675. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  676. data = db.FindTable(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  677. }
  678. else
  679. {
  680. data = db.FindTable(strSql, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  681. }
  682. pagination.records = total;
  683. return data;
  684. }
  685. /// <summary>
  686. /// 查询列表(分页)
  687. /// </summary>
  688. /// <param name="strSql">sql语句</param>
  689. /// <param name="dbParameter">参数</param>
  690. /// <param name="pagination">分页数据</param>
  691. /// <returns></returns>
  692. public DataTable FindTable(string strSql, object dbParameter, Pagination pagination)
  693. {
  694. int total = pagination.records;
  695. DataTable data;
  696. if (dbWhere != null)
  697. {
  698. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  699. if (orderIndex > 0)
  700. {
  701. strSql = strSql.Substring(0, orderIndex);
  702. string orderString = strSql.Substring(orderIndex);
  703. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  704. }
  705. else
  706. {
  707. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  708. }
  709. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  710. dynamicParameters.AddDynamicParams(dbParameter);
  711. data = db.FindTable(strSql, dynamicParameters, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  712. }
  713. else
  714. {
  715. data = db.FindTable(strSql, dbParameter, pagination.sidx, pagination.sord.ToLower() == "asc" ? true : false, pagination.rows, pagination.page, out total);
  716. }
  717. pagination.records = total;
  718. return data;
  719. }
  720. /// <summary>
  721. /// 获取查询对象
  722. /// </summary>
  723. /// <param name="strSql">SQL语句</param>
  724. /// <returns></returns>
  725. public object FindObject(string strSql)
  726. {
  727. if (dbWhere != null)
  728. {
  729. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  730. if (orderIndex > 0)
  731. {
  732. strSql = strSql.Substring(0, orderIndex);
  733. string orderString = strSql.Substring(orderIndex);
  734. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  735. }
  736. else
  737. {
  738. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  739. }
  740. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  741. return db.FindObject(strSql, dynamicParameters);
  742. }
  743. else
  744. {
  745. return db.FindObject(strSql);
  746. }
  747. }
  748. /// <summary>
  749. /// 获取查询对象
  750. /// </summary>
  751. /// <param name="strSql">sql语句</param>
  752. /// <param name="dbParameter">参数</param>
  753. /// <returns></returns>
  754. public object FindObject(string strSql, object dbParameter)
  755. {
  756. if (dbWhere != null)
  757. {
  758. int orderIndex = strSql.ToUpper().IndexOf("ORDER BY");
  759. if (orderIndex > 0)
  760. {
  761. strSql = strSql.Substring(0, orderIndex);
  762. string orderString = strSql.Substring(orderIndex);
  763. strSql = string.Format(" select * From ({0})t Where {1} {2} ", strSql, dbWhere.sql, orderString);
  764. }
  765. else
  766. {
  767. strSql = string.Format(" select * From ({0})t Where {1} ", strSql, dbWhere.sql);
  768. }
  769. DynamicParameters dynamicParameters = SqlHelper.FieldValueParamToParameter(dbWhere.dbParameters);
  770. dynamicParameters.AddDynamicParams(dbParameter);
  771. return db.FindObject(strSql, dynamicParameters);
  772. }
  773. else
  774. {
  775. return db.FindObject(strSql, dbParameter);
  776. }
  777. }
  778. #endregion
  779. #region 扩展方法
  780. /// <summary>
  781. /// 获取数据库表数据
  782. /// </summary>
  783. /// <typeparam name="T">反序列化类型</typeparam>
  784. /// <returns></returns>
  785. public IEnumerable<T> GetDBTable<T>() where T : class, new()
  786. {
  787. return db.GetDBTable<T>();
  788. }
  789. /// <summary>
  790. /// 获取数据库表字段数据
  791. /// </summary>
  792. /// <typeparam name="T">反序列化类型</typeparam>
  793. /// <param name="tableName">表名</param>
  794. /// <returns></returns>
  795. public IEnumerable<T> GetDBTableFields<T>(string tableName) where T : class, new()
  796. {
  797. return db.GetDBTableFields<T>(tableName);
  798. }
  799. #endregion
  800. }
  801. }