comparison Source/DataAccess/SqlQueryT.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children 99cd4f3947d8
comparison
equal deleted inserted replaced
-1:000000000000 0:f990fcb411a9
1 using System;
2 using System.Collections.Generic;
3
4 namespace BLToolkit.DataAccess
5 {
6 using Data;
7 using Mapping;
8 using Reflection.Extension;
9
10 public class SqlQuery<T> : SqlQueryBase
11 {
12 #region Constructors
13
14 public SqlQuery()
15 {
16 }
17
18 public SqlQuery(DbManager dbManager)
19 : base(dbManager)
20 {
21 }
22
23 public SqlQuery(DbManager dbManager, bool dispose)
24 : base(dbManager, dispose)
25 {
26 }
27
28 public SqlQuery(ExtensionList extensions)
29 {
30 Extensions = extensions;
31 }
32
33 #endregion
34
35 #region Overrides
36
37 public SqlQueryInfo GetSqlQueryInfo(DbManager db, string actionName)
38 {
39 return base.GetSqlQueryInfo(db, typeof(T), actionName);
40 }
41
42 #endregion
43
44 #region SelectByKey
45
46 public virtual T SelectByKey(DbManager db, params object[] keys)
47 {
48 var query = GetSqlQueryInfo(db, typeof(T), "SelectByKey");
49
50 return db
51 .SetCommand(query.QueryText, query.GetParameters(db, keys))
52 .ExecuteObject<T>();
53 }
54
55 public virtual T SelectByKey(params object[] keys)
56 {
57 var db = GetDbManager();
58
59 try
60 {
61 return SelectByKey(db, keys);
62 }
63 finally
64 {
65 if (DisposeDbManager)
66 db.Dispose();
67 }
68 }
69
70 #endregion
71
72 #region SelectAll
73
74 static SqlQueryInfo _selectAllQuery;
75
76 public virtual List<T> SelectAll(DbManager db)
77 {
78 if (_selectAllQuery == null)
79 _selectAllQuery = GetSqlQueryInfo(db, typeof(T), "SelectAll");
80
81 return db
82 .SetCommand(_selectAllQuery.QueryText)
83 .ExecuteList<T>();
84 }
85
86 public virtual TL SelectAll<TL>(DbManager db, TL list)
87 where TL : IList<T>
88 {
89 var query = GetSqlQueryInfo(db, typeof(T), "SelectAll");
90
91 return db
92 .SetCommand(query.QueryText)
93 .ExecuteList<TL,T>(list);
94 }
95
96 public virtual TL SelectAll<TL>(DbManager db)
97 where TL : IList<T>, new()
98 {
99 return SelectAll(db, new TL());
100 }
101
102 public virtual List<T> SelectAll()
103 {
104 var db = GetDbManager();
105
106 try
107 {
108 return SelectAll(db);
109 }
110 finally
111 {
112 if (DisposeDbManager)
113 db.Dispose();
114 }
115 }
116
117 public virtual TL SelectAll<TL>(TL list)
118 where TL : IList<T>
119 {
120 var db = GetDbManager();
121
122 try
123 {
124 return SelectAll(db, list);
125 }
126 finally
127 {
128 if (DisposeDbManager)
129 db.Dispose();
130 }
131 }
132
133 public virtual TL SelectAll<TL>()
134 where TL : IList<T>, new()
135 {
136 return SelectAll(new TL());
137 }
138
139 #endregion
140
141 #region Insert
142
143 public virtual int Insert(DbManager db, T obj)
144 {
145 var query = GetSqlQueryInfo(db, obj.GetType(), "Insert");
146
147 return db
148 .SetCommand(query.QueryText, query.GetParameters(db, obj))
149 .ExecuteNonQuery();
150 }
151
152 public virtual int Insert(T obj)
153 {
154 var db = GetDbManager();
155
156 try
157 {
158 return Insert(db, obj);
159 }
160 finally
161 {
162 if (DisposeDbManager)
163 db.Dispose();
164 }
165 }
166
167 public virtual int Insert(DbManager db, int maxBatchSize, IEnumerable<T> list)
168 {
169 var query = GetSqlQueryInfo(db, typeof(T), "InsertBatch");
170
171 return db.DataProvider.InsertBatch(
172 db,
173 query.QueryText,
174 list,
175 query.GetMemberMappers(),
176 maxBatchSize,
177 obj => query.GetParameters(db, obj));
178 }
179
180 public virtual int Insert(int maxBatchSize, IEnumerable<T> list)
181 {
182 var db = GetDbManager();
183
184 try
185 {
186 return Insert(db, maxBatchSize, list);
187 }
188 finally
189 {
190 if (DisposeDbManager)
191 db.Dispose();
192 }
193 }
194
195 public virtual int Insert(DbManager db, IEnumerable<T> list)
196 {
197 return Insert(db, int.MaxValue, list);
198 }
199
200 public virtual int Insert(IEnumerable<T> list)
201 {
202 return Insert(int.MaxValue, list);
203 }
204
205 #endregion
206
207 #region Update
208
209 public virtual int Update(DbManager db, T obj)
210 {
211 var query = GetSqlQueryInfo(db, obj.GetType(), "Update");
212
213 return db
214 .SetCommand(query.QueryText, query.GetParameters(db, obj))
215 .ExecuteNonQuery();
216 }
217
218 public virtual int Update(T obj)
219 {
220 var db = GetDbManager();
221
222 try
223 {
224 return Update(db, obj);
225 }
226 finally
227 {
228 if (DisposeDbManager)
229 db.Dispose();
230 }
231 }
232
233 public virtual int Update(DbManager db, int maxBatchSize, IEnumerable<T> list)
234 {
235 var query = GetSqlQueryInfo(db, typeof(T), "UpdateBatch");
236
237 db.SetCommand(query.QueryText);
238
239 return ExecuteForEach(
240 db,
241 list,
242 query.GetMemberMappers(),
243 maxBatchSize,
244 obj => query.GetParameters(db, obj));
245 }
246
247 public virtual int Update(int maxBatchSize, IEnumerable<T> list)
248 {
249 var db = GetDbManager();
250
251 try
252 {
253 return Update(db, maxBatchSize, list);
254 }
255 finally
256 {
257 if (DisposeDbManager)
258 db.Dispose();
259 }
260 }
261
262 public virtual int Update(DbManager db, IEnumerable<T> list)
263 {
264 return Update(db, int.MaxValue, list);
265 }
266
267 public virtual int Update(IEnumerable<T> list)
268 {
269 return Update(int.MaxValue, list);
270 }
271
272 #endregion
273
274 #region DeleteByKey
275
276 public virtual int DeleteByKey(DbManager db, params object[] key)
277 {
278 var query = GetSqlQueryInfo(db, typeof(T), "Delete");
279
280 return db
281 .SetCommand(query.QueryText, query.GetParameters(db, key))
282 .ExecuteNonQuery();
283 }
284
285 public virtual int DeleteByKey(params object[] key)
286 {
287 var db = GetDbManager();
288
289 try
290 {
291 return DeleteByKey(db, key);
292 }
293 finally
294 {
295 if (DisposeDbManager)
296 db.Dispose();
297 }
298 }
299
300 #endregion
301
302 #region Delete
303
304 public virtual int Delete(DbManager db, T obj)
305 {
306 var query = GetSqlQueryInfo(db, obj.GetType(), "Delete");
307
308 return db
309 .SetCommand(query.QueryText, query.GetParameters(db, obj))
310 .ExecuteNonQuery();
311 }
312
313 public virtual int Delete(T obj)
314 {
315 var db = GetDbManager();
316
317 try
318 {
319 return Delete(db, obj);
320 }
321 finally
322 {
323 if (DisposeDbManager)
324 db.Dispose();
325 }
326 }
327
328 public virtual int Delete(DbManager db, int maxBatchSize, IEnumerable<T> list)
329 {
330 var query = GetSqlQueryInfo(db, typeof(T), "DeleteBatch");
331
332 db.SetCommand(query.QueryText);
333
334 return ExecuteForEach(
335 db,
336 list,
337 query.GetMemberMappers(),
338 maxBatchSize,
339 obj => query.GetParameters(db, obj));
340 }
341
342 public virtual int Delete(int maxBatchSize, IEnumerable<T> list)
343 {
344 var db = GetDbManager();
345
346 try
347 {
348 return Delete(db, list);
349 }
350 finally
351 {
352 if (DisposeDbManager)
353 db.Dispose();
354 }
355 }
356
357 public virtual int Delete(DbManager db, IEnumerable<T> list)
358 {
359 return Delete(db, int.MaxValue, list);
360 }
361
362 public virtual int Delete(IEnumerable<T> list)
363 {
364 return Delete(int.MaxValue, list);
365 }
366
367 #endregion
368
369 #region Helpers
370
371 protected int ExecuteForEach(
372 DbManager db,
373 IEnumerable<T> collection,
374 MemberMapper[] members,
375 int maxBatchSize,
376 DbManager.ParameterProvider<T> getParameters)
377 {
378 return db.ExecuteForEach(collection, members, maxBatchSize, getParameters);
379 }
380
381 #endregion
382 }
383 }