1. SQL 语句生成组建
之前说过ORM框架中有一个非常重要的组件,那就是SQL语句生成组件。SQL语句生成组件,顾名思义就是用于生成sql语句的一个组件。之前的Attribute 是用于修饰实体信息,而上一章讲的实体分析器分析了实体信息,在很大一部分程度上,以上做工作就是为这个SQL语句生成组件服务的。
该组件的核心接口是IDbFactory,它实现了接口IDisposable
目前该ORM支持SQL Server 数据库的sql语句生成,在后期过程中会逐步实现对Oracle,Mysql,Access 等数据库的支持
下面是该接口定义的方法图表:
2. 核心接口
核心接口定义源码
1 /**
2 * 2010-2-2
3 *
4 * 情 缘
5 *
6 * IDbFactory 接口实现了IDisposable 接口,实现该
7 * 接口的类可以通过IDisposable 接口来释放对象占用
8 * 的内存。该接口的主要作用适用于根据实体对象来创
9 * 建SQL Server 数据库脚本。ORM 的主要作用是为了
10 * 实现对象化操作数据库,而此操作就是为了实现对象
11 * 化操作和数据库语句操作的过渡
12 *
13 * */
14 using System;
15 using System.Collections.Generic;
16 using System.Linq;
17 using System.Text;
18 using CommonData.Entity;
19 using System.Data;
20 using CommonData.Model.Core;
21
22 namespace CommonData.Data.Core
23 {
24 public interface IDbFactory : IDisposable
25 {
26 /// <summary>
27 /// 根据实体对象公共接口创建插入的sql语句
28 /// </summary>
29 /// <param name="entity">实体公共接口</param>
30 /// <param name="param">创建sql语句对应占位符参数</param>
31 /// <returns></returns>
32 string CreateInsertSql(IEntity entity, out IDataParameter[] param);
33
34 /// <summary>
35 /// 根据实体类型创建插入sql语句
36 /// </summary>
37 /// <param name="type">实体类型</param>
38 /// <param name="value">实体对象</param>
39 /// <param name="param">创建sql语句对应占位符参数</param>
40 /// <returns></returns>
41 string CreateInsertSql(Type type, object value, out IDataParameter[] param);
42
43 /// <summary>
44 /// 根据泛型类型创建插入sql语句
45 /// </summary>
46 /// <typeparam name="T">泛型类型</typeparam>
47 /// <param name="t">泛型实体类</param>
48 /// <param name="param">创建sql语句对应占位符参数</param>
49 /// <returns></returns>
50 string CreateInsertSql<T>(T t, out IDataParameter[] param) where T : IEntity;
51
52 /// <summary>
53 /// 根据实体对象公共接口创建修改的的sql语句
54 /// 该sql语句是根据主键列修改的
55 /// </summary>
56 /// <param name="entity">实体公共接口</param>
57 /// <param name="param">创建sql语句对应占位符参数</param>
58 /// <returns></returns>
59 string CreateUpdateSql(IEntity entity, out IDataParameter[] param);
60
61 /// <summary>
62 /// 根据实体对象类型创建修改的的sql语句
63 /// </summary>
64 /// <param name="type">实体类型</param>
65 /// <param name="value">实体对象</param>
66 /// <param name="param">创建sql语句对应占位符参数</param>
67 /// <returns></returns>
68 string CreateUpdateSql(Type type, object value, out IDataParameter[] param);
69
70 /// <summary>
71 /// 根据实体对象公共接口创建修改的的sql语句
72 /// 该sql语句是根据一个特定的属性作为修改条件的
73 /// </summary>
74 /// <param name="entity">实体公共接口</param>
75 /// <param name="param">创建sql语句对应占位符参数</param>
76 /// <param name="propertyName">属性名称</param>
77 /// <returns></returns>
78 string CreateUpdateSql(IEntity entity, out IDataParameter[] param, string propertyName);
79
80 /// <summary>
81 /// 根据实体对象类型创建修改的的sql语句
82 /// 该sql语句是根据一个特定的属性作为修改条件的
83 /// </summary>
84 /// <param name="type">实体类型</param>
85 /// <param name="value">实体对象</param>
86 /// <param name="param">创建sql语句对应占位符参数</param>
87 /// <param name="propertyName">属性名称</param>
88 /// <returns></returns>
89 string CreateUpdateSql(Type type, object value, out IDataParameter[] param, string propertyName);
90
91 /// <summary>
92 /// 根据实体对象公共接口创建修改的的sql语句
93 /// 该sql语句是根据多个特定的属性作为修改条件的
94 /// </summary>
95 /// <param name="entity">实体公共接口</param>
96 /// <param name="param">创建sql语句对应占位符参数</param>
97 /// <param name="propertyNames">属性名称</param>
98 /// <returns></returns>
99 string CreateUpdateSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);
100
101 /// <summary>
102 /// 根据实体对象类型创建修改的的sql语句
103 /// 该sql语句是根据多个特定的属性作为修改条件的
104 /// </summary>
105 /// <param name="type">实体类型</param>
106 /// <param name="value">实体对象</param>
107 /// <param name="param">创建sql语句对应占位符参数</param>
108 /// <param name="propertyNames">属性名称</param>
109 /// <returns></returns>
110 string CreateUpdateSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);
111
112 /// <summary>
113 /// 根据实体对象公共接口创建修改的的sql语句
114 /// 该sql语句是根据查询组建创建的
115 /// </summary>
116 /// <param name="entity">实体公共接口</param>
117 /// <param name="param">创建sql语句对应占位符参数</param>
118 /// <param name="component">查询条件组件</param>
119 /// <returns></returns>
120 string CreateUpdateSql(IEntity entity, out IDataParameter[] param, ConditionComponent component);
121
122 /// <summary>
123 /// 根据实体对象公共接口创建删除sql语句
124 /// 该sql语句是根据实体主键删除
125 /// </summary>
126 /// <param name="entity">实体公共接口</param>
127 /// <param name="param">创建sql语句对应占位符参数</param>
128 /// <returns></returns>
129 string CreateDeleteSql(IEntity entity, out IDataParameter[] param);
130
131 /// <summary>
132 /// 根据实体对象类型创建删除sql语句
133 /// 该sql语句是根据实体主键删除
134 /// </summary>
135 /// <param name="type">实体类型</param>
136 /// <param name="value">实体对象</param>
137 /// <param name="param">创建sql语句对应占位符参数</param>
138 /// <returns></returns>
139 string CreateDeleteSql(Type type,object value,out IDataParameter[] param);
140
141 /// <summary>
142 /// 根据实体对象公共接口的某个属性创建删除sql语句
143 /// 该sql语句是根据实体属性删除
144 /// </summary>
145 /// <param name="entity">实体公共接口</param>
146 /// <param name="param">创建sql语句对应占位符参数</param>
147 /// <param name="propertyName">实体属性名称</param>
148 /// <returns></returns>
149 string CreateDeleteSql(IEntity entity, out IDataParameter[] param, string propertyName);
150
151 /// <summary>
152 /// 根据实体对象类型的某个属性创建删除sql语句
153 /// 该sql语句是根据实体属性删除
154 /// </summary>
155 /// <param name="type">实体类型</param>
156 /// <param name="value">实体对象</param>
157 /// <param name="param">创建sql语句对应占位符参数</param>
158 /// <param name="propertyName">实体属性名称</param>
159 /// <returns></returns>
160 string CreateDeleteSql(Type type, object value, out IDataParameter[] param, string propertyName);
161
162 /// <summary>
163 /// 根据实体对象公共接口的多个属性创建删除sql语句
164 /// 该sql语句是根据实体多个属性删除
165 /// </summary>
166 /// <param name="entity">实体公共接口</param>
167 /// <param name="param">创建sql语句对应占位符参数</param>
168 /// <param name="propertyName">实体属性名称数组</param>
169 /// <returns></returns>
170 string CreateDeleteSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);
171
172 /// <summary>
173 /// 根据实体对象类型的多个属性创建删除sql语句
174 /// 该sql语句是根据实体多个属性删除
175 /// </summary>
176 /// <param name="type">实体了姓</param>
177 /// <param name="value">实体对象</param>
178 /// <param name="param">创建sql语句对应占位符参数</param>
179 /// <param name="propertyNames">实体属性名称数组</param>
180 /// <returns></returns>
181 string CreateDeleteSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);
182
183 /// <summary>
184 /// 根据实体对象公共接口的多个属性创建删除sql语句
185 /// 该sql语句使根据查询组建来创建的
186 /// </summary>
187 /// <param name="entity">实体公共接口</param>
188 /// <param name="param">创建sql语句对应占位符参数</param>
189 /// <param name="component">实体属性名称数组</param>
190 /// <returns></returns>
191 string CreateDeleteSql(IEntity entity, out IDataParameter[] param, ConditionComponent component);
192
193 /// <summary>
194 /// 根据实体的公共接口创建查询单行数据的sql语句
195 /// 该sql语句是根据数据库表的主键来查询的
196 /// </summary>
197 /// <param name="entity">实体公共接口</param>
198 /// <param name="param">创建sql语句对应占位符参数</param>
199 /// <returns></returns>
200 string CreateSingleSql(IEntity entity, out IDataParameter[] param);
201
202 /// <summary>
203 /// 根据实体的公共接口创建查询单行数据的sql语句
204 /// 该sql语句是根据实体的相应属性来查询
205 /// </summary>
206 /// <param name="entity">实体公共接口</param>
207 /// <param name="param">创建sql语句对应占位符参数</param>
208 /// <returns></returns>
209 string CreateSingleSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);
210
211 /// <summary>
212 /// 根据实体类型创建查询单行数据的sql语句
213 /// 该sql语句是根据实体的相应属性来查询
214 /// </summary>
215 /// <param name="type">实体类型</param>
216 /// <param name="value">实体对象</param>
217 /// <param name="param">创建sql语句对应占位符参数</param>
218 /// <param name="propertyNames">属性名称数组</param>
219 /// <returns></returns>
220 string CreateSingleSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);
221
222 /// <summary>
223 /// 根据实体的类型创建查询sql语句
224 /// </summary>
225 /// <param name="entityType">实体类型</param>
226 /// <returns></returns>
227 string CreateSingleSql(Type entityType);
228
229 /// <summary>
230 /// 根据实体的类型创建查询sql语句,
231 /// 该方法指定主键值
232 /// </summary>
233 /// <param name="type">实体类型</param>
234 /// <param name="pkPropertyValue">主键值</param>
235 /// <param name="param">创建sql语句对应占位符参数</param>
236 /// <returns></returns>
237 string CreateSingleSql(Type type, object pkPropertyValue,out IDataParameter[] param);
238
239 /// <summary>
240 /// 根据实体的类型创建查询该实体对象对应数据库表的所有数据的sql语句
241 /// 该sql语句用于查询所有数据,并转换为相应List<T> 集合
242 /// </summary>
243 /// <param name="type">实体的类型</param>
244 /// <returns></returns>
245 string CreateQuerySql(Type type);
246
247 /// <summary>
248 /// 根据实体的某个属性创建根据该属性字段查询数据的sql语句
249 /// 该sql语句是使用参数中属性对应字段作为条件查询的
250 /// </summary>
251 /// <param name="type">实体类型</param>
252 /// <param name="propertyName">属性名称</param>
253 /// <param name="value">属性值</param>
254 /// <param name="param">sql语句占位符参数</param>
255 /// <returns></returns>
256 string CreateQueryByPropertySql(Type type, string propertyName, object value, out IDataParameter[] param);
257
258 /// <summary>
259 /// 根据实体的某些属性创建根据该些属性字段查询数据的sql语句
260 /// 该sql语句是使用参数中属性对应字段作为条件查询的,并且该
261 /// 属性集合都是根据and条件组装的
262 /// </summary>
263 /// <param name="type">实体类型</param>
264 /// <param name="dic">属性-值集合</param>
265 /// <param name="param">sql语句占位符参数</param>
266 /// <returns></returns>
267 string CreateQueryByPropertySql(Type type, IDictionary<string, object> dic, out IDataParameter[] param);
268
269 /// <summary>
270 /// 根据实体的某些属性创建根据该些属性字段查询数据的sql语句
271 /// 该sql语句是使用参数中属性对应字段作为条件查询的,并且查
272 /// 询是根据查询组建来创建
273 /// </summary>
274 /// <param name="type">实体类型</param>
275 /// <param name="dic">属性-值集合</param>
276 /// <param name="param">sql语句占位符参数</param>
277 /// <param name="component">查询组建</param>
278 /// <returns></returns>
279 string CreateQueryByPropertySql(Type type, IDictionary<string, object> dic, out IDataParameter[] param, ConditionComponent component);
280
281 /// <summary>
282 /// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句
283 /// 该方法创建的sql语句主要是用于查询数据行数
284 /// </summary>
285 /// <param name="type">实体类型</param>
286 /// <param name="converage">聚合函数枚举类型</param>
287 /// <returns></returns>
288 string CreateConverageSql(Type type, Converage converage);
289
290 /// <summary>
291 /// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句
292 /// 该方法创建的sql语句主要是用于统计查询(最大值,最小值,求和,平均值,数据行数)
293 /// </summary>
294 /// <param name="type">实体类型</param>
295 /// <param name="converage">聚合函数枚举类型</param>
296 /// <param name="propertyName">聚合函数作用的属性名称</param>
297 /// <returns></returns>
298 string CreateConverageSql(Type type, Converage converage, string propertyName);
299
300 /// <summary>
301 /// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句
302 /// 该方法创建的sql语句主要是用于统计查询(最大值,最小值,求和,平均值,数据行数),
303 /// 同时该sql是有条件查询的
304 /// </summary>
305 /// <param name="type">实体类型</param>
306 /// <param name="converage">聚合函数枚举类型</param>
307 /// <param name="propertyName">聚合函数作用的属性名称</param>
308 /// <param name="dic">查询条件属性键值</param>
309 /// <param name="component">查询条件组建对象</param>
310 /// <returns></returns>
311 string CreateConverageSql(Type type, Converage converage, string propertyName, IDictionary<string, object> dic, out IDataParameter[] param, ConditionComponent component);
312
313 /// <summary>
314 /// 根据占位符名称创建参数
315 /// </summary>
316 /// <param name="name">占位符名称</param>
317 /// <returns></returns>
318 IDataParameter CreateParameter(string name);
319
320 /// <summary>
321 /// 根据占位符和值创建参数
322 /// </summary>
323 /// <param name="name">占位符名称</param>
324 /// <param name="value">占位符的值</param>
325 /// <returns></returns>
326 IDataParameter CreateParameter(string name, object value);
327
328 /// <summary>
329 /// 根据占位符名称,类型和值创建参数
330 /// </summary>
331 /// <param name="name">占位符名称</param>
332 /// <param name="type">参数的类型</param>
333 /// <param name="value">参数的值</param>
334 /// <returns></returns>
335 IDataParameter CreateParameter(string name, DataType type, object value);
336
337 /// <summary>
338 /// 根据占位符的名称,类型和大小创建参数
339 /// </summary>
340 /// <param name="name">占位符名称</param>
341 /// <param name="type">参数类型</param>
342 /// <param name="size">参数值大小</param>
343 /// <returns></returns>
344 IDataParameter CreateParameter(string name, DataType type, int size);
345
346 /// <summary>
347 /// 根据占位符的名称,类型,大小和值创建参数
348 /// </summary>
349 /// <param name="name">占位符名称</param>
350 /// <param name="type">参数类型</param>
351 /// <param name="size">参数大小</param>
352 /// <param name="value">参数值</param>
353 /// <returns></returns>
354 IDataParameter CreateParameter(string name, DataType type, int size, object value);
355
356 /// <summary>
357 /// 根据占位符名称和类型创建参数
358 /// </summary>
359 /// <param name="name">占位符名称</param>
360 /// <param name="type">占位符类型</param>
361 /// <returns></returns>
362 IDataParameter CreateParameter(string name, DataType type);
363 }
364 }
365
2 * 2010-2-2
3 *
4 * 情 缘
5 *
6 * IDbFactory 接口实现了IDisposable 接口,实现该
7 * 接口的类可以通过IDisposable 接口来释放对象占用
8 * 的内存。该接口的主要作用适用于根据实体对象来创
9 * 建SQL Server 数据库脚本。ORM 的主要作用是为了
10 * 实现对象化操作数据库,而此操作就是为了实现对象
11 * 化操作和数据库语句操作的过渡
12 *
13 * */
14 using System;
15 using System.Collections.Generic;
16 using System.Linq;
17 using System.Text;
18 using CommonData.Entity;
19 using System.Data;
20 using CommonData.Model.Core;
21
22 namespace CommonData.Data.Core
23 {
24 public interface IDbFactory : IDisposable
25 {
26 /// <summary>
27 /// 根据实体对象公共接口创建插入的sql语句
28 /// </summary>
29 /// <param name="entity">实体公共接口</param>
30 /// <param name="param">创建sql语句对应占位符参数</param>
31 /// <returns></returns>
32 string CreateInsertSql(IEntity entity, out IDataParameter[] param);
33
34 /// <summary>
35 /// 根据实体类型创建插入sql语句
36 /// </summary>
37 /// <param name="type">实体类型</param>
38 /// <param name="value">实体对象</param>
39 /// <param name="param">创建sql语句对应占位符参数</param>
40 /// <returns></returns>
41 string CreateInsertSql(Type type, object value, out IDataParameter[] param);
42
43 /// <summary>
44 /// 根据泛型类型创建插入sql语句
45 /// </summary>
46 /// <typeparam name="T">泛型类型</typeparam>
47 /// <param name="t">泛型实体类</param>
48 /// <param name="param">创建sql语句对应占位符参数</param>
49 /// <returns></returns>
50 string CreateInsertSql<T>(T t, out IDataParameter[] param) where T : IEntity;
51
52 /// <summary>
53 /// 根据实体对象公共接口创建修改的的sql语句
54 /// 该sql语句是根据主键列修改的
55 /// </summary>
56 /// <param name="entity">实体公共接口</param>
57 /// <param name="param">创建sql语句对应占位符参数</param>
58 /// <returns></returns>
59 string CreateUpdateSql(IEntity entity, out IDataParameter[] param);
60
61 /// <summary>
62 /// 根据实体对象类型创建修改的的sql语句
63 /// </summary>
64 /// <param name="type">实体类型</param>
65 /// <param name="value">实体对象</param>
66 /// <param name="param">创建sql语句对应占位符参数</param>
67 /// <returns></returns>
68 string CreateUpdateSql(Type type, object value, out IDataParameter[] param);
69
70 /// <summary>
71 /// 根据实体对象公共接口创建修改的的sql语句
72 /// 该sql语句是根据一个特定的属性作为修改条件的
73 /// </summary>
74 /// <param name="entity">实体公共接口</param>
75 /// <param name="param">创建sql语句对应占位符参数</param>
76 /// <param name="propertyName">属性名称</param>
77 /// <returns></returns>
78 string CreateUpdateSql(IEntity entity, out IDataParameter[] param, string propertyName);
79
80 /// <summary>
81 /// 根据实体对象类型创建修改的的sql语句
82 /// 该sql语句是根据一个特定的属性作为修改条件的
83 /// </summary>
84 /// <param name="type">实体类型</param>
85 /// <param name="value">实体对象</param>
86 /// <param name="param">创建sql语句对应占位符参数</param>
87 /// <param name="propertyName">属性名称</param>
88 /// <returns></returns>
89 string CreateUpdateSql(Type type, object value, out IDataParameter[] param, string propertyName);
90
91 /// <summary>
92 /// 根据实体对象公共接口创建修改的的sql语句
93 /// 该sql语句是根据多个特定的属性作为修改条件的
94 /// </summary>
95 /// <param name="entity">实体公共接口</param>
96 /// <param name="param">创建sql语句对应占位符参数</param>
97 /// <param name="propertyNames">属性名称</param>
98 /// <returns></returns>
99 string CreateUpdateSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);
100
101 /// <summary>
102 /// 根据实体对象类型创建修改的的sql语句
103 /// 该sql语句是根据多个特定的属性作为修改条件的
104 /// </summary>
105 /// <param name="type">实体类型</param>
106 /// <param name="value">实体对象</param>
107 /// <param name="param">创建sql语句对应占位符参数</param>
108 /// <param name="propertyNames">属性名称</param>
109 /// <returns></returns>
110 string CreateUpdateSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);
111
112 /// <summary>
113 /// 根据实体对象公共接口创建修改的的sql语句
114 /// 该sql语句是根据查询组建创建的
115 /// </summary>
116 /// <param name="entity">实体公共接口</param>
117 /// <param name="param">创建sql语句对应占位符参数</param>
118 /// <param name="component">查询条件组件</param>
119 /// <returns></returns>
120 string CreateUpdateSql(IEntity entity, out IDataParameter[] param, ConditionComponent component);
121
122 /// <summary>
123 /// 根据实体对象公共接口创建删除sql语句
124 /// 该sql语句是根据实体主键删除
125 /// </summary>
126 /// <param name="entity">实体公共接口</param>
127 /// <param name="param">创建sql语句对应占位符参数</param>
128 /// <returns></returns>
129 string CreateDeleteSql(IEntity entity, out IDataParameter[] param);
130
131 /// <summary>
132 /// 根据实体对象类型创建删除sql语句
133 /// 该sql语句是根据实体主键删除
134 /// </summary>
135 /// <param name="type">实体类型</param>
136 /// <param name="value">实体对象</param>
137 /// <param name="param">创建sql语句对应占位符参数</param>
138 /// <returns></returns>
139 string CreateDeleteSql(Type type,object value,out IDataParameter[] param);
140
141 /// <summary>
142 /// 根据实体对象公共接口的某个属性创建删除sql语句
143 /// 该sql语句是根据实体属性删除
144 /// </summary>
145 /// <param name="entity">实体公共接口</param>
146 /// <param name="param">创建sql语句对应占位符参数</param>
147 /// <param name="propertyName">实体属性名称</param>
148 /// <returns></returns>
149 string CreateDeleteSql(IEntity entity, out IDataParameter[] param, string propertyName);
150
151 /// <summary>
152 /// 根据实体对象类型的某个属性创建删除sql语句
153 /// 该sql语句是根据实体属性删除
154 /// </summary>
155 /// <param name="type">实体类型</param>
156 /// <param name="value">实体对象</param>
157 /// <param name="param">创建sql语句对应占位符参数</param>
158 /// <param name="propertyName">实体属性名称</param>
159 /// <returns></returns>
160 string CreateDeleteSql(Type type, object value, out IDataParameter[] param, string propertyName);
161
162 /// <summary>
163 /// 根据实体对象公共接口的多个属性创建删除sql语句
164 /// 该sql语句是根据实体多个属性删除
165 /// </summary>
166 /// <param name="entity">实体公共接口</param>
167 /// <param name="param">创建sql语句对应占位符参数</param>
168 /// <param name="propertyName">实体属性名称数组</param>
169 /// <returns></returns>
170 string CreateDeleteSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);
171
172 /// <summary>
173 /// 根据实体对象类型的多个属性创建删除sql语句
174 /// 该sql语句是根据实体多个属性删除
175 /// </summary>
176 /// <param name="type">实体了姓</param>
177 /// <param name="value">实体对象</param>
178 /// <param name="param">创建sql语句对应占位符参数</param>
179 /// <param name="propertyNames">实体属性名称数组</param>
180 /// <returns></returns>
181 string CreateDeleteSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);
182
183 /// <summary>
184 /// 根据实体对象公共接口的多个属性创建删除sql语句
185 /// 该sql语句使根据查询组建来创建的
186 /// </summary>
187 /// <param name="entity">实体公共接口</param>
188 /// <param name="param">创建sql语句对应占位符参数</param>
189 /// <param name="component">实体属性名称数组</param>
190 /// <returns></returns>
191 string CreateDeleteSql(IEntity entity, out IDataParameter[] param, ConditionComponent component);
192
193 /// <summary>
194 /// 根据实体的公共接口创建查询单行数据的sql语句
195 /// 该sql语句是根据数据库表的主键来查询的
196 /// </summary>
197 /// <param name="entity">实体公共接口</param>
198 /// <param name="param">创建sql语句对应占位符参数</param>
199 /// <returns></returns>
200 string CreateSingleSql(IEntity entity, out IDataParameter[] param);
201
202 /// <summary>
203 /// 根据实体的公共接口创建查询单行数据的sql语句
204 /// 该sql语句是根据实体的相应属性来查询
205 /// </summary>
206 /// <param name="entity">实体公共接口</param>
207 /// <param name="param">创建sql语句对应占位符参数</param>
208 /// <returns></returns>
209 string CreateSingleSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);
210
211 /// <summary>
212 /// 根据实体类型创建查询单行数据的sql语句
213 /// 该sql语句是根据实体的相应属性来查询
214 /// </summary>
215 /// <param name="type">实体类型</param>
216 /// <param name="value">实体对象</param>
217 /// <param name="param">创建sql语句对应占位符参数</param>
218 /// <param name="propertyNames">属性名称数组</param>
219 /// <returns></returns>
220 string CreateSingleSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);
221
222 /// <summary>
223 /// 根据实体的类型创建查询sql语句
224 /// </summary>
225 /// <param name="entityType">实体类型</param>
226 /// <returns></returns>
227 string CreateSingleSql(Type entityType);
228
229 /// <summary>
230 /// 根据实体的类型创建查询sql语句,
231 /// 该方法指定主键值
232 /// </summary>
233 /// <param name="type">实体类型</param>
234 /// <param name="pkPropertyValue">主键值</param>
235 /// <param name="param">创建sql语句对应占位符参数</param>
236 /// <returns></returns>
237 string CreateSingleSql(Type type, object pkPropertyValue,out IDataParameter[] param);
238
239 /// <summary>
240 /// 根据实体的类型创建查询该实体对象对应数据库表的所有数据的sql语句
241 /// 该sql语句用于查询所有数据,并转换为相应List<T> 集合
242 /// </summary>
243 /// <param name="type">实体的类型</param>
244 /// <returns></returns>
245 string CreateQuerySql(Type type);
246
247 /// <summary>
248 /// 根据实体的某个属性创建根据该属性字段查询数据的sql语句
249 /// 该sql语句是使用参数中属性对应字段作为条件查询的
250 /// </summary>
251 /// <param name="type">实体类型</param>
252 /// <param name="propertyName">属性名称</param>
253 /// <param name="value">属性值</param>
254 /// <param name="param">sql语句占位符参数</param>
255 /// <returns></returns>
256 string CreateQueryByPropertySql(Type type, string propertyName, object value, out IDataParameter[] param);
257
258 /// <summary>
259 /// 根据实体的某些属性创建根据该些属性字段查询数据的sql语句
260 /// 该sql语句是使用参数中属性对应字段作为条件查询的,并且该
261 /// 属性集合都是根据and条件组装的
262 /// </summary>
263 /// <param name="type">实体类型</param>
264 /// <param name="dic">属性-值集合</param>
265 /// <param name="param">sql语句占位符参数</param>
266 /// <returns></returns>
267 string CreateQueryByPropertySql(Type type, IDictionary<string, object> dic, out IDataParameter[] param);
268
269 /// <summary>
270 /// 根据实体的某些属性创建根据该些属性字段查询数据的sql语句
271 /// 该sql语句是使用参数中属性对应字段作为条件查询的,并且查
272 /// 询是根据查询组建来创建
273 /// </summary>
274 /// <param name="type">实体类型</param>
275 /// <param name="dic">属性-值集合</param>
276 /// <param name="param">sql语句占位符参数</param>
277 /// <param name="component">查询组建</param>
278 /// <returns></returns>
279 string CreateQueryByPropertySql(Type type, IDictionary<string, object> dic, out IDataParameter[] param, ConditionComponent component);
280
281 /// <summary>
282 /// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句
283 /// 该方法创建的sql语句主要是用于查询数据行数
284 /// </summary>
285 /// <param name="type">实体类型</param>
286 /// <param name="converage">聚合函数枚举类型</param>
287 /// <returns></returns>
288 string CreateConverageSql(Type type, Converage converage);
289
290 /// <summary>
291 /// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句
292 /// 该方法创建的sql语句主要是用于统计查询(最大值,最小值,求和,平均值,数据行数)
293 /// </summary>
294 /// <param name="type">实体类型</param>
295 /// <param name="converage">聚合函数枚举类型</param>
296 /// <param name="propertyName">聚合函数作用的属性名称</param>
297 /// <returns></returns>
298 string CreateConverageSql(Type type, Converage converage, string propertyName);
299
300 /// <summary>
301 /// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句
302 /// 该方法创建的sql语句主要是用于统计查询(最大值,最小值,求和,平均值,数据行数),
303 /// 同时该sql是有条件查询的
304 /// </summary>
305 /// <param name="type">实体类型</param>
306 /// <param name="converage">聚合函数枚举类型</param>
307 /// <param name="propertyName">聚合函数作用的属性名称</param>
308 /// <param name="dic">查询条件属性键值</param>
309 /// <param name="component">查询条件组建对象</param>
310 /// <returns></returns>
311 string CreateConverageSql(Type type, Converage converage, string propertyName, IDictionary<string, object> dic, out IDataParameter[] param, ConditionComponent component);
312
313 /// <summary>
314 /// 根据占位符名称创建参数
315 /// </summary>
316 /// <param name="name">占位符名称</param>
317 /// <returns></returns>
318 IDataParameter CreateParameter(string name);
319
320 /// <summary>
321 /// 根据占位符和值创建参数
322 /// </summary>
323 /// <param name="name">占位符名称</param>
324 /// <param name="value">占位符的值</param>
325 /// <returns></returns>
326 IDataParameter CreateParameter(string name, object value);
327
328 /// <summary>
329 /// 根据占位符名称,类型和值创建参数
330 /// </summary>
331 /// <param name="name">占位符名称</param>
332 /// <param name="type">参数的类型</param>
333 /// <param name="value">参数的值</param>
334 /// <returns></returns>
335 IDataParameter CreateParameter(string name, DataType type, object value);
336
337 /// <summary>
338 /// 根据占位符的名称,类型和大小创建参数
339 /// </summary>
340 /// <param name="name">占位符名称</param>
341 /// <param name="type">参数类型</param>
342 /// <param name="size">参数值大小</param>
343 /// <returns></returns>
344 IDataParameter CreateParameter(string name, DataType type, int size);
345
346 /// <summary>
347 /// 根据占位符的名称,类型,大小和值创建参数
348 /// </summary>
349 /// <param name="name">占位符名称</param>
350 /// <param name="type">参数类型</param>
351 /// <param name="size">参数大小</param>
352 /// <param name="value">参数值</param>
353 /// <returns></returns>
354 IDataParameter CreateParameter(string name, DataType type, int size, object value);
355
356 /// <summary>
357 /// 根据占位符名称和类型创建参数
358 /// </summary>
359 /// <param name="name">占位符名称</param>
360 /// <param name="type">占位符类型</param>
361 /// <returns></returns>
362 IDataParameter CreateParameter(string name, DataType type);
363 }
364 }
365