BaseBLL.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. using ProjectBase.Data.Pager;
  2. using ProjectBase.Util;
  3. using System;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Data.Common;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace ProjectBase.Data.BaseDAL
  12. {
  13. /// <summary>
  14. /// 业务基类对象
  15. /// </summary>
  16. /// <typeparam name="T">业务对象类型</typeparam>
  17. public class BaseBLL<T> where T : BaseEntity, new()
  18. {
  19. #region 构造函数
  20. private string dalName = "";
  21. /// <summary>
  22. /// BLL业务类的全名(子类必须实现),可使用this.GetType().FullName
  23. /// </summary>
  24. protected string bllFullName;
  25. /// <summary>
  26. /// 数据访问层程序集的清单文件的文件名,不包括其扩展名,可使用Assembly.GetExecutingAssembly().GetName().Name
  27. /// </summary>
  28. protected string dalAssemblyName;
  29. /// <summary>
  30. /// BLL命名空间的前缀(BLL.)
  31. /// </summary>
  32. protected string bllPrefix = "BLL.";
  33. /// <summary>
  34. /// 基础数据访问层接口对象
  35. /// </summary>
  36. protected IBaseDAL<T> baseDal = null;
  37. /// <summary>
  38. /// 默认构造函数,调用后需手动调用一次 Init() 方法进行对象初始化
  39. /// </summary>
  40. public BaseBLL() { }
  41. /// <summary>
  42. /// 参数赋值后,初始化相关对象
  43. /// </summary>
  44. /// <param name="bllFullName">BLL业务类的全名(子类必须实现),子类构造函数传入this.GetType().FullName</param>
  45. /// <param name="dalAssemblyName">数据访问层程序集的清单文件的文件名,不包括其扩展名。设置为NULL或默认为Assembly.GetExecutingAssembly().GetName().Name</param>
  46. /// <param name="bllPrefix">BLL命名空间的前缀(BLL.)</param>
  47. /// <param name="dbConfigName">数据库配置项名称</param>
  48. protected void Init(string bllFullName, string dalAssemblyName = null, string dbConfigName = null, string bllPrefix = "BLL.")
  49. {
  50. if (string.IsNullOrEmpty(bllFullName))
  51. throw new ArgumentNullException("子类未设置bllFullName业务类全名!");
  52. if (string.IsNullOrEmpty(dalAssemblyName))
  53. {
  54. dalAssemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
  55. }
  56. //赋值,准备构建对象
  57. this.bllFullName = bllFullName;
  58. this.dalAssemblyName = dalAssemblyName;
  59. this.bllPrefix = bllPrefix;
  60. #region 根据不同的数据库类型,构造相应的DAL层
  61. //AppConfig config = new AppConfig();
  62. string dbType = System.Configuration.ConfigurationManager.AppSettings["ComponentDbType"];
  63. if (string.IsNullOrEmpty(dbType))
  64. {
  65. dbType = "sqlserver";
  66. }
  67. dbType = dbType.ToLower();
  68. string DALPrefix = "";
  69. if (dbType == "sqlserver")
  70. {
  71. DALPrefix = "DAL.DALSQL.";
  72. }
  73. else if (dbType == "access")
  74. {
  75. DALPrefix = "DAL.DALAccess.";
  76. }
  77. else if (dbType == "oracle")
  78. {
  79. DALPrefix = "DAL.DALOracle.";
  80. }
  81. else if (dbType == "sqlite")
  82. {
  83. DALPrefix = "DAL.DALSQL.";
  84. }
  85. else if (dbType == "mysql")
  86. {
  87. DALPrefix = "DAL.DALMySql.";
  88. }
  89. #endregion
  90. this.dalName = bllFullName.Replace(bllPrefix, DALPrefix).Replace("Bl", "Dal");//替换中级的BLL.为DAL.,就是DAL类的全名
  91. this.dalAssemblyName = dalAssemblyName.Replace("BLL", "DAL");
  92. baseDal = Reflect<IBaseDAL<T>>.Create(this.dalName, this.dalAssemblyName);//构造对应的DAL数据访问层的对象类
  93. dbConfigName = dbType;
  94. //dbConfigName = "Persist Security Info = True; Data Source = (local); Initial Catalog = simdp; user id = siasun; password = siasun; MultipleActiveResultSets = True; Integrated Security = SSPI";
  95. if (!string.IsNullOrEmpty(dbConfigName))
  96. {
  97. baseDal.SetDbConfigName(dbConfigName); //设置数据库配置项名称
  98. }
  99. }
  100. /// <summary>
  101. /// 调用前检查baseDal是否为空引用
  102. /// </summary>
  103. protected void CheckDAL()
  104. {
  105. if (baseDal == null)
  106. {
  107. throw new ArgumentNullException("baseDal", "未能成功创建对应的DAL对象,请在BLL业务类构造函数中调用base.Init(**,**)方法,如base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);");
  108. }
  109. }
  110. #endregion
  111. #region 对象添加、修改、查询接口
  112. /// <summary>
  113. /// 插入指定对象到数据库中
  114. /// </summary>
  115. /// <param name="obj">指定的对象</param>
  116. /// <param name="trans">事务对象</param>
  117. /// <returns>执行操作是否成功。</returns>
  118. public virtual bool Insert(T obj, DbTransaction trans = null)
  119. {
  120. CheckDAL();
  121. return baseDal.Insert(obj, trans);
  122. }
  123. /// <summary>
  124. /// 插入指定对象到数据库中
  125. /// </summary>
  126. /// <param name="obj">指定的对象</param>
  127. /// <param name="trans">事务对象</param>
  128. /// <returns>执行成功返回新增记录的自增长ID。</returns>
  129. public virtual int Insert2(T obj, DbTransaction trans = null)
  130. {
  131. CheckDAL();
  132. return baseDal.Insert2(obj, trans);
  133. }
  134. /// <summary>
  135. /// 更新对象属性到数据库中
  136. /// </summary>
  137. /// <param name="obj">指定的对象</param>
  138. /// <param name="primaryKeyValue">主键的值</param>
  139. /// <param name="trans">事务对象</param>
  140. /// <returns>执行成功返回<c>true</c>,否则为<c>false</c>。</returns>
  141. public virtual bool Update(T obj, object primaryKeyValue, DbTransaction trans = null)
  142. {
  143. CheckDAL();
  144. return baseDal.Update(obj, primaryKeyValue, trans);
  145. }
  146. /// <summary>
  147. /// 更新数据到数据表中
  148. /// </summary>
  149. /// <param name="commandType">SQL类型</param>
  150. /// <param name="sql">sql或者存储过程</param>
  151. /// <param name="trans">事务对象</param>
  152. /// <returns>执行成功返回<c>true</c>,否则为<c>false</c>。</returns>
  153. public virtual bool Update(CommandType commandType, string sql, DbTransaction trans = null)
  154. {
  155. CheckDAL();
  156. return baseDal.Update(commandType, sql, trans);
  157. }
  158. /// <summary>
  159. /// 更新某个表一条记录(只适用于用单键,用string类型作键值的表)
  160. /// </summary>
  161. /// <param name="id">ID号</param>
  162. /// <param name="recordField">Hashtable:键[key]为字段名;值[value]为字段对应的值</param>
  163. /// <param name="targetTable">需要操作的目标表名称</param>
  164. /// <param name="trans">事务对象,如果使用事务,传入事务对象,否则为Null不使用事务</param>
  165. public virtual bool Update(object id, Hashtable recordField, string targetTable, DbTransaction trans)
  166. {
  167. CheckDAL();
  168. return baseDal.Update(id, recordField, targetTable, trans);
  169. }
  170. /// <summary>
  171. /// 插入或更新对象属性到数据库中
  172. /// </summary>
  173. /// <param name="obj">指定的对象</param>
  174. /// <param name="primaryKeyValue">主键的值</param>
  175. /// <param name="trans">事务对象</param>
  176. /// <returns>执行成功返回<c>true</c>,否则为<c>false</c>。</returns>
  177. public virtual bool InsertUpdate(T obj, object primaryKeyValue, DbTransaction trans = null)
  178. {
  179. CheckDAL();
  180. return baseDal.InsertUpdate(obj, primaryKeyValue, trans);
  181. }
  182. /// <summary>
  183. /// 如果不存在记录,则插入对象属性到数据库中
  184. /// </summary>
  185. /// <param name="obj">指定的对象</param>
  186. /// <param name="primaryKeyValue">主键的值</param>
  187. /// <param name="trans">事务对象</param>
  188. /// <returns>执行插入成功返回<c>true</c>,否则为<c>false</c>。</returns>
  189. public virtual bool InsertIfNew(T obj, object primaryKeyValue, DbTransaction trans = null)
  190. {
  191. CheckDAL();
  192. return baseDal.InsertIfNew(obj, primaryKeyValue, trans);
  193. }
  194. /// <summary>
  195. /// 执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。
  196. /// </summary>
  197. /// <param name="sql">SQL语句</param>
  198. /// <param name="trans">事务对象</param>
  199. /// <returns>
  200. /// 返回查询结果的所有记录的第一个字段,用逗号分隔。
  201. /// </returns>
  202. public virtual string SqlValueList(string sql, DbTransaction trans = null)
  203. {
  204. CheckDAL();
  205. return baseDal.SqlValueList(sql, trans);
  206. }
  207. /// <summary>
  208. /// 执行SQL查询语句,返回所有记录的DataTable集合。
  209. /// </summary>
  210. /// <param name="sql">SQL查询语句</param>
  211. /// <param name="trans">事务对象</param>
  212. /// <returns></returns>
  213. public virtual DataTable SqlTable(string sql, DbTransaction trans = null)
  214. {
  215. CheckDAL();
  216. return baseDal.SqlTable(sql, trans);
  217. }
  218. /// <summary>
  219. /// 执行SQL查询语句,返回所有记录的DataTable集合。
  220. /// </summary>
  221. /// <param name="sql">SQL查询语句</param>
  222. /// <param name="parameters">参数集合</param>
  223. /// <param name="trans">事务对象</param>
  224. /// <returns></returns>
  225. public virtual DataTable SqlTable(string sql, DbParameter[] parameters, DbTransaction trans = null)
  226. {
  227. CheckDAL();
  228. return baseDal.SqlTable(sql, parameters, trans);
  229. }
  230. /// <summary>
  231. /// 查询数据库,检查是否存在指定ID的对象
  232. /// </summary>
  233. /// <param name="key">对象的ID值</param>
  234. /// <param name="trans">事务对象</param>
  235. /// <returns>存在则返回指定的对象,否则返回Null</returns>
  236. public virtual T FindByID(object key, DbTransaction trans = null)
  237. {
  238. CheckDAL();
  239. return baseDal.FindByID(key, trans);
  240. }
  241. /// <summary>
  242. /// 根据条件查询数据库,如果存在返回第一个对象
  243. /// </summary>
  244. /// <param name="condition">查询的条件</param>
  245. /// <param name="trans">事务对象</param>
  246. /// <returns>指定的对象</returns>
  247. public virtual T FindSingle(string condition, DbTransaction trans = null)
  248. {
  249. CheckDAL();
  250. return baseDal.FindSingle(condition, trans);
  251. }
  252. /// <summary>
  253. /// 根据条件查询数据库,如果存在返回第一个对象
  254. /// </summary>
  255. /// <param name="condition">查询的条件</param>
  256. /// <param name="orderBy">排序条件</param>
  257. /// <param name="trans">事务对象</param>
  258. /// <returns>指定的对象</returns>
  259. public virtual T FindSingle(string condition, string orderBy, DbTransaction trans = null)
  260. {
  261. CheckDAL();
  262. return baseDal.FindSingle(condition, orderBy, trans);
  263. }
  264. /// <summary>
  265. /// 查找记录表中最旧的一条记录
  266. /// </summary>
  267. /// <param name="trans">事务对象</param>
  268. /// <returns></returns>
  269. public virtual T FindFirst(DbTransaction trans = null)
  270. {
  271. CheckDAL();
  272. return baseDal.FindFirst(trans);
  273. }
  274. /// <summary>
  275. /// 查找记录表中最新的一条记录
  276. /// </summary>
  277. /// <param name="trans">事务对象</param>
  278. /// <returns></returns>
  279. public virtual T FindLast(DbTransaction trans = null)
  280. {
  281. CheckDAL();
  282. return baseDal.FindLast(trans);
  283. }
  284. #endregion
  285. #region 返回集合的接口
  286. /// <summary>
  287. /// 根据ID字符串(逗号分隔)获取对象列表
  288. /// </summary>
  289. /// <param name="idString">ID字符串(逗号分隔)</param>
  290. /// <param name="trans">事务对象</param>
  291. /// <returns>符合条件的对象列表</returns>
  292. public virtual List<T> FindByIDs(string idString, DbTransaction trans = null)
  293. {
  294. CheckDAL();
  295. return baseDal.FindByIDs(idString, trans);
  296. }
  297. /// <summary>
  298. /// 根据条件查询数据库,并返回对象集合
  299. /// </summary>
  300. /// <param name="condition">查询的条件</param>
  301. /// <param name="trans">事务对象</param>
  302. /// <returns>指定对象的集合</returns>
  303. public virtual List<T> Find(string condition, DbTransaction trans = null)
  304. {
  305. CheckDAL();
  306. return baseDal.Find(condition, trans);
  307. }
  308. /// <summary>
  309. /// 根据条件查询数据库,并返回对象集合
  310. /// </summary>
  311. /// <param name="condition">查询的条件</param>
  312. /// <param name="orderBy">排序条件</param>
  313. /// <param name="trans">事务对象</param>
  314. /// <returns>指定对象的集合</returns>
  315. public virtual List<T> Find(string condition, string orderBy, DbTransaction trans = null)
  316. {
  317. CheckDAL();
  318. return baseDal.Find(condition, orderBy, trans);
  319. }
  320. /// <summary>
  321. /// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
  322. /// </summary>
  323. /// <param name="condition">查询的条件</param>
  324. /// <param name="info">分页实体</param>
  325. /// <param name="trans">事务对象</param>
  326. /// <returns>指定对象的集合</returns>
  327. public virtual List<T> FindWithPager(string condition, PagerInfo info, DbTransaction trans = null)
  328. {
  329. CheckDAL();
  330. return baseDal.FindWithPager(condition, info, trans);
  331. }
  332. /// <summary>
  333. /// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
  334. /// </summary>
  335. /// <param name="condition">查询的条件</param>
  336. /// <param name="info">分页实体</param>
  337. /// <param name="fieldToSort">排序字段</param>
  338. /// <param name="trans">事务对象</param>
  339. /// <returns>指定对象的集合</returns>
  340. public virtual List<T> FindWithPager(string condition, PagerInfo info, string fieldToSort, DbTransaction trans = null)
  341. {
  342. CheckDAL();
  343. return baseDal.FindWithPager(condition, info, fieldToSort, trans);
  344. }
  345. /// <summary>
  346. /// 根据条件查询数据库,并返回对象集合(用于分页数据显示)
  347. /// </summary>
  348. /// <param name="condition">查询的条件</param>
  349. /// <param name="info">分页实体</param>
  350. /// <param name="fieldToSort">排序字段</param>
  351. /// <param name="desc">是否降序</param>
  352. /// <param name="trans">事务对象</param>
  353. /// <returns>指定对象的集合</returns>
  354. public virtual List<T> FindWithPager(string condition, PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
  355. {
  356. CheckDAL();
  357. return baseDal.FindWithPager(condition, info, fieldToSort, desc, trans);
  358. }
  359. /// <summary>
  360. /// 返回数据库所有的对象集合
  361. /// </summary>
  362. /// <param name="trans">事务对象</param>
  363. /// <returns>指定对象的集合</returns>
  364. public virtual List<T> GetAll(DbTransaction trans = null)
  365. {
  366. CheckDAL();
  367. return baseDal.GetAll(trans);
  368. }
  369. /// <summary>
  370. /// 返回数据库所有的对象集合
  371. /// </summary>
  372. /// <param name="orderBy">自定义排序语句,如Order By Name Desc;如不指定,则使用默认排序</param>
  373. /// <param name="trans">事务对象</param>
  374. /// <returns>指定对象的集合</returns>
  375. public virtual List<T> GetAll(string orderBy, DbTransaction trans = null)
  376. {
  377. CheckDAL();
  378. return baseDal.GetAll(orderBy, trans);
  379. }
  380. /// <summary>
  381. /// 返回数据库所有的对象集合(用于分页数据显示)
  382. /// </summary>
  383. /// <param name="info">分页实体信息</param>
  384. /// <param name="trans">事务对象</param>
  385. /// <returns>指定对象的集合</returns>
  386. public virtual List<T> GetAll(PagerInfo info, DbTransaction trans = null)
  387. {
  388. CheckDAL();
  389. return baseDal.GetAll(info, trans);
  390. }
  391. /// <summary>
  392. /// 返回数据库所有的对象集合(用于分页数据显示)
  393. /// </summary>
  394. /// <param name="info">分页实体信息</param>
  395. /// <param name="fieldToSort">排序字段</param>
  396. /// <param name="desc">是否降序</param>
  397. /// <param name="trans">事务对象</param>
  398. /// <returns>指定对象的集合</returns>
  399. public virtual List<T> GetAll(PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
  400. {
  401. CheckDAL();
  402. return baseDal.GetAll(info, fieldToSort, desc, trans);
  403. }
  404. /// <summary>
  405. /// 返回所有记录到DataTable集合中
  406. /// </summary>
  407. /// <param name="trans">事务对象</param>
  408. /// <returns></returns>
  409. public virtual DataTable GetAllToDataTable(DbTransaction trans = null)
  410. {
  411. CheckDAL();
  412. return baseDal.GetAllToDataTable(trans);
  413. }
  414. /// <summary>
  415. /// 返回所有记录到DataTable集合中
  416. /// </summary>
  417. /// <param name="orderBy">自定义排序语句,如Order By Name Desc;如不指定,则使用默认排序</param>
  418. /// <param name="trans">事务对象</param>
  419. /// <returns></returns>
  420. public virtual DataTable GetAllToDataTable(string orderBy, DbTransaction trans = null)
  421. {
  422. CheckDAL();
  423. return baseDal.GetAllToDataTable(orderBy, trans);
  424. }
  425. /// <summary>
  426. /// 根据分页条件,返回DataSet对象
  427. /// </summary>
  428. /// <param name="info">分页条件</param>
  429. /// <param name="trans">事务对象</param>
  430. /// <returns></returns>
  431. public virtual DataTable GetAllToDataTable(PagerInfo info, DbTransaction trans = null)
  432. {
  433. CheckDAL();
  434. return baseDal.GetAllToDataTable(info, trans);
  435. }
  436. /// <summary>
  437. /// 根据分页条件,返回DataSet对象
  438. /// </summary>
  439. /// <param name="info">分页条件</param>
  440. /// <param name="fieldToSort">排序字段</param>
  441. /// <param name="trans">事务对象</param>
  442. /// <param name="desc">是否降序</param>
  443. /// <returns></returns>
  444. public virtual DataTable GetAllToDataTable(PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
  445. {
  446. CheckDAL();
  447. return baseDal.GetAllToDataTable(info, fieldToSort, desc, trans);
  448. }
  449. /// <summary>
  450. /// 根据查询条件,返回记录到DataTable集合中
  451. /// </summary>
  452. /// <param name="condition">查询条件</param>
  453. /// <param name="trans">事务对象</param>
  454. /// <returns></returns>
  455. public virtual DataTable FindToDataTable(string condition, DbTransaction trans = null)
  456. {
  457. CheckDAL();
  458. return baseDal.FindToDataTable(condition, trans);
  459. }
  460. /// <summary>
  461. /// 根据查询条件,返回记录到DataTable集合中
  462. /// </summary>
  463. /// <param name="condition">查询条件</param>
  464. /// <param name="pagerInfo">分页条件</param>
  465. /// <param name="trans">事务对象</param>
  466. /// <returns></returns>
  467. public virtual DataTable FindToDataTable(string condition, PagerInfo pagerInfo, DbTransaction trans = null)
  468. {
  469. CheckDAL();
  470. return baseDal.FindToDataTable(condition, pagerInfo, trans);
  471. }
  472. /// <summary>
  473. /// 根据条件查询数据库,并返回DataTable集合(用于分页数据显示)
  474. /// </summary>
  475. /// <param name="condition">查询的条件</param>
  476. /// <param name="info">分页实体</param>
  477. /// <param name="fieldToSort">排序字段</param>
  478. /// <param name="desc">是否降序</param>
  479. /// <param name="trans">事务对象</param>
  480. /// <returns>指定DataTable的集合</returns>
  481. public virtual DataTable FindToDataTable(string condition, PagerInfo info, string fieldToSort, bool desc, DbTransaction trans = null)
  482. {
  483. CheckDAL();
  484. return baseDal.FindToDataTable(condition, info, fieldToSort, desc, trans);
  485. }
  486. /// <summary>
  487. /// 获取字段列表
  488. /// </summary>
  489. /// <param name="fieldName">字段名称</param>
  490. /// <param name="trans">事务对象</param>
  491. /// <returns></returns>
  492. public virtual List<string> GetFieldList(string fieldName, DbTransaction trans = null)
  493. {
  494. CheckDAL();
  495. return baseDal.GetFieldList(fieldName, trans);
  496. }
  497. /// <summary>
  498. /// 根据条件,获取某字段数据字典列表
  499. /// </summary>
  500. /// <param name="fieldName">字段名称</param>
  501. /// <param name="trans">事务对象</param>
  502. /// <returns></returns>
  503. public List<string> GetFieldListByCondition(string fieldName, string condition, DbTransaction trans = null)
  504. {
  505. CheckDAL();
  506. return baseDal.GetFieldListByCondition(fieldName, condition, trans);
  507. }
  508. /// <summary>
  509. /// 根据条件,从视图里面获取记录
  510. /// </summary>
  511. /// <param name="viewName">视图名称</param>
  512. /// <param name="condition">查询条件</param>
  513. /// <param name="trans">事务对象</param>
  514. /// <returns></returns>
  515. public virtual DataTable FindByView(string viewName, string condition, DbTransaction trans = null)
  516. {
  517. CheckDAL();
  518. return baseDal.FindByView(viewName, condition, trans);
  519. }
  520. /// <summary>
  521. /// 根据条件,从视图里面获取记录
  522. /// </summary>
  523. /// <param name="viewName">视图名称</param>
  524. /// <param name="condition">查询条件</param>
  525. /// <param name="sortField">排序字段</param>
  526. /// <param name="isDescending">是否为降序</param>
  527. /// <param name="trans">事务对象</param>
  528. /// <returns></returns>
  529. public virtual DataTable FindByView(string viewName, string condition, string sortField, bool isDescending, DbTransaction trans = null)
  530. {
  531. CheckDAL();
  532. return baseDal.FindByView(viewName, condition, sortField, isDescending, trans);
  533. }
  534. /// <summary>
  535. /// 根据条件,从视图里面获取记录
  536. /// </summary>
  537. /// <param name="viewName">视图名称</param>
  538. /// <param name="condition">查询条件</param>
  539. /// <param name="sortField">排序字段</param>
  540. /// <param name="isDescending">是否为降序</param>
  541. /// <param name="info">分页条件</param>
  542. /// <param name="trans">事务对象</param>
  543. /// <returns></returns>
  544. public virtual DataTable FindByViewWithPager(string viewName, string condition, string sortField, bool isDescending, PagerInfo info, DbTransaction trans = null)
  545. {
  546. CheckDAL();
  547. return baseDal.FindByViewWithPager(viewName, condition, sortField, isDescending, info, trans);
  548. }
  549. #endregion
  550. #region 基础接口
  551. /// <summary>
  552. /// 获取表的所有记录数量
  553. /// </summary>
  554. /// <param name="trans">事务对象</param>
  555. /// <returns></returns>
  556. public virtual int GetRecordCount(DbTransaction trans = null)
  557. {
  558. CheckDAL();
  559. return baseDal.GetRecordCount(trans);
  560. }
  561. /// <summary>
  562. /// 获取表的指定条件记录数量
  563. /// </summary>
  564. /// <param name="trans">事务对象</param>
  565. /// <returns></returns>
  566. public virtual int GetRecordCount(string condition, DbTransaction trans = null)
  567. {
  568. CheckDAL();
  569. return baseDal.GetRecordCount(condition, trans);
  570. }
  571. /// <summary>
  572. /// 根据condition条件,判断是否存在记录
  573. /// </summary>
  574. /// <param name="condition">查询的条件</param>
  575. /// <param name="trans">事务对象</param>
  576. /// <returns>如果存在返回True,否则False</returns>
  577. public virtual bool IsExistRecord(string condition, DbTransaction trans = null)
  578. {
  579. CheckDAL();
  580. return baseDal.IsExistRecord(condition, trans);
  581. }
  582. /// <summary>
  583. /// 查询数据库,检查是否存在指定键值的对象
  584. /// </summary>
  585. /// <param name="fieldName">指定的属性名</param>
  586. /// <param name="key">指定的值</param>
  587. /// <param name="trans">事务对象</param>
  588. /// <returns>存在则返回<c>true</c>,否则为<c>false</c>。</returns>
  589. public virtual bool IsExistKey(string fieldName, object key, DbTransaction trans = null)
  590. {
  591. CheckDAL();
  592. return baseDal.IsExistKey(fieldName, key, trans);
  593. }
  594. /// <summary>
  595. /// 根据主键和字段名称,获取对应字段的内容
  596. /// </summary>
  597. /// <param name="key">指定对象的ID</param>
  598. /// <param name="fieldName">字段名称</param>
  599. /// <param name="trans">事务对象</param>
  600. /// <returns></returns>
  601. public virtual string GetFieldValue(object key, string fieldName, DbTransaction trans = null)
  602. {
  603. CheckDAL();
  604. return baseDal.GetFieldValue(key, fieldName, trans);
  605. }
  606. /// <summary>
  607. /// 根据指定对象的ID,从数据库中删除指定对象
  608. /// </summary>
  609. /// <param name="key">指定对象的ID</param>
  610. /// <param name="trans">事务对象</param>
  611. /// <returns>执行成功返回<c>true</c>,否则为<c>false</c>。</returns>
  612. public virtual bool Delete(object key, string userId, DbTransaction trans = null)
  613. {
  614. CheckDAL();
  615. return baseDal.Delete(key, userId, trans);
  616. }
  617. /// <summary>
  618. /// 根据指定条件,从数据库中删除指定对象
  619. /// </summary>
  620. /// <param name="condition">删除记录的条件语句</param>
  621. /// <param name="trans">事务对象</param>
  622. /// <returns>执行成功返回<c>true</c>,否则为<c>false</c>。</returns>
  623. public virtual bool DeleteByCondition(string condition, DbTransaction trans = null)
  624. {
  625. CheckDAL();
  626. return baseDal.DeleteByCondition(condition, trans);
  627. }
  628. /// <summary>
  629. /// 打开数据库连接,并创建事务对象
  630. /// </summary>
  631. public virtual DbTransaction CreateTransaction()
  632. {
  633. CheckDAL();
  634. return baseDal.CreateTransaction();
  635. }
  636. /// <summary>
  637. /// 打开数据库连接,并创建事务对象
  638. /// </summary>
  639. /// <param name="level">事务级别</param>
  640. public virtual DbTransaction CreateTransaction(IsolationLevel level)
  641. {
  642. CheckDAL();
  643. return baseDal.CreateTransaction(level);
  644. }
  645. #endregion
  646. #region 其他接口
  647. /// <summary>
  648. /// 初始化数据库表名
  649. /// </summary>
  650. /// <param name="tableName">数据库表名</param>
  651. public virtual void InitTableName(string tableName)
  652. {
  653. CheckDAL();
  654. baseDal.InitTableName(tableName);
  655. }
  656. /// <summary>
  657. /// 获取表的字段名称和数据类型列表
  658. /// </summary>
  659. /// <returns></returns>
  660. public virtual DataTable GetFieldTypeList()
  661. {
  662. CheckDAL();
  663. return baseDal.GetFieldTypeList();
  664. }
  665. /// <summary>
  666. /// 获取字段中文别名(用于界面显示)的字典集合
  667. /// </summary>
  668. /// <returns></returns>
  669. public virtual Dictionary<string, string> GetColumnNameAlias()
  670. {
  671. CheckDAL();
  672. return baseDal.GetColumnNameAlias();
  673. }
  674. /// <summary>
  675. /// 获取指定字段的报表数据
  676. /// </summary>
  677. /// <param name="fieldName">表字段</param>
  678. /// <param name="condition">查询条件</param>
  679. /// <returns></returns>
  680. public virtual DataTable GetReportData(string fieldName, string condition)
  681. {
  682. CheckDAL();
  683. return baseDal.GetReportData(fieldName, condition);
  684. }
  685. #endregion
  686. }
  687. }