QueryCommandBuilder.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using Ant.Frame;
  5. using Ant.Data;
  6. using Ant.Descriptors;
  7. namespace Ant.ORM
  8. {
  9. public abstract class QueryCommandBuilder
  10. {
  11. private Type entityType;
  12. /// <summary>
  13. /// 实体类型
  14. /// </summary>
  15. public Type EntityType
  16. {
  17. get { return entityType; }
  18. set { entityType = value; }
  19. }
  20. private SqlEnum _sqltype;
  21. /// <summary>
  22. /// SQL语句类型
  23. /// </summary>
  24. public SqlEnum SqlType
  25. {
  26. get { return _sqltype; }
  27. set { _sqltype = value; }
  28. }
  29. private EntityPersistType persistType;
  30. /// <summary>
  31. /// 操作类型
  32. /// </summary>
  33. public EntityPersistType PersistType
  34. {
  35. get { return persistType; }
  36. set { persistType = value; }
  37. }
  38. //private MakeShowFields _selectfield ;
  39. ///// <summary>
  40. ///// 显示的列
  41. ///// </summary>
  42. //public MakeShowFields SelectField
  43. //{
  44. // get { return _selectfield; }
  45. // set { _selectfield = value; }
  46. //}
  47. private string _showfield;
  48. /// <summary>
  49. /// 显示的列
  50. /// </summary>
  51. public string ShowField
  52. {
  53. get { return _showfield; }
  54. set { _showfield = value; }
  55. }
  56. private MetaData _md;
  57. /// <summary>
  58. /// 实体属性
  59. /// </summary>
  60. public MetaData Md
  61. {
  62. get { return _md; }
  63. set { _md = value; }
  64. }
  65. private FieldValueCollection fields;
  66. /// <summary>
  67. /// 实体属性集合
  68. /// </summary>
  69. public FieldValueCollection Fields
  70. {
  71. get { return fields; }
  72. set { fields = value; }
  73. }
  74. private Type _childObjects;//子对象集合
  75. /// <summary>
  76. /// 子对象类型
  77. /// </summary>
  78. public Type ChildObjects
  79. {
  80. get { return this._childObjects; }
  81. set { _childObjects = value; }
  82. }
  83. private QueryCommand _QueryComm;
  84. /// <summary>
  85. /// 实体属性集合
  86. /// </summary>
  87. public QueryCommand QueryComm
  88. {
  89. get { return _QueryComm; }
  90. set { _QueryComm = value; }
  91. }
  92. private string _Top;
  93. /// <summary>
  94. ///
  95. /// </summary>
  96. public string Top
  97. {
  98. get { return _Top; }
  99. set { _Top = value; }
  100. }
  101. private int pageNo = 0;
  102. /// <summary>
  103. /// 第几页
  104. /// </summary>
  105. public int PageNo
  106. {
  107. get { return pageNo; }
  108. set { pageNo = value; }
  109. }
  110. private int pageSize = 0;
  111. /// <summary>
  112. /// 每页显示的条数
  113. /// </summary>
  114. public int PageSize
  115. {
  116. get { return pageSize; }
  117. set { pageSize = value; }
  118. }
  119. private bool isPaging = false;
  120. private string _moduleName;
  121. /// <summary>
  122. /// 模块
  123. /// </summary>
  124. public string ModuleName
  125. {
  126. get { return _moduleName; }
  127. set { _moduleName = value; }
  128. }
  129. /// <summary>
  130. /// 拼接查询条件
  131. /// </summary>
  132. public IPredicate Predicate
  133. {
  134. get;
  135. set;
  136. }
  137. /// <summary>
  138. /// 排序
  139. /// </summary>
  140. public IList<ISort> Sort
  141. {
  142. get;
  143. set;
  144. }
  145. /// <summary>
  146. /// 是否分页
  147. /// </summary>
  148. public bool IsPaging
  149. {
  150. get { return isPaging; }
  151. set { isPaging = value; }
  152. }
  153. /// <summary>
  154. /// 拼接SQL字符串
  155. /// </summary>
  156. public static string DbParmChar { get; set; }
  157. /// <summary>
  158. /// 创建不同解析SQL语句
  159. /// </summary>
  160. /// <param name="databaseType">数据库类型</param>
  161. /// <returns></returns>
  162. public static QueryCommandBuilder Instance(DatabaseType databaseType)
  163. {
  164. QueryCommandBuilder qcb = null;
  165. switch (databaseType)
  166. {
  167. case DatabaseType.MSSQLServer:
  168. {
  169. DbParmChar = "@";
  170. qcb = new MSSqlQueryCommandBuilder();
  171. }
  172. break;
  173. case DatabaseType.OleDb:
  174. {
  175. DbParmChar = "@";
  176. qcb = new OleDbQueryCommandBuilder();
  177. }
  178. break;
  179. case DatabaseType.MySQL:
  180. {
  181. DbParmChar = "@";
  182. qcb = new MySqlQueryCommandBuilder();
  183. }
  184. break;
  185. case DatabaseType.Oracle:
  186. {
  187. DbParmChar = ":";
  188. qcb = new OracleQueryCommandBuilder();
  189. }
  190. break;
  191. case DatabaseType.SQLite:
  192. {
  193. DbParmChar = "@";
  194. qcb = new SQLiteQueryCommandBuilder();//后期再扩展
  195. }
  196. break;
  197. }
  198. return qcb;
  199. }
  200. /// <summary>
  201. /// 返回查询对象
  202. /// </summary>
  203. /// <returns></returns>
  204. public abstract QueryCommand GetQueryCommand();//映射到DataBaise文件夹中去找它对应的数据库连接方式{MSSqlQueryCommandBuilder.cs}
  205. }
  206. }