Helper.cs 模板生成帮助类
1
using System;
2
using System.Data;
3
using System.ComponentModel;
4
using CodeSmith.Engine;
5
using SchemaExplorer;
6
using Microsoft.CSharp;
7![]()
8
public class Helper : CodeTemplate
9
{
10
public string GetCSharpVariableType(ColumnSchema column)
11
{
12
if (column.Name.EndsWith("TypeCode")) return column.Name;
13![]()
14
switch (column.DataType)
15
{
16
case DbType.AnsiString: return "string";
17
case DbType.AnsiStringFixedLength: return "string";
18
case DbType.Binary: return "byte[]";
19
case DbType.Boolean: return "bool";
20
case DbType.Byte: return "byte";
21
case DbType.Currency: return "decimal";
22
case DbType.Date: return "DateTime";
23
case DbType.DateTime: return "DateTime";
24
case DbType.Decimal: return "decimal";
25
case DbType.Double: return "double";
26
case DbType.Guid: return "Guid";
27
case DbType.Int16: return "short";
28
case DbType.Int32: return "int";
29
case DbType.Int64: return "long";
30
case DbType.Object: return "object";
31
case DbType.SByte: return "sbyte";
32
case DbType.Single: return "float";
33
case DbType.String: return "string";
34
case DbType.StringFixedLength: return "string";
35
case DbType.Time: return "TimeSpan";
36
case DbType.UInt16: return "ushort";
37
case DbType.UInt32: return "uint";
38
case DbType.UInt64: return "ulong";
39
case DbType.VarNumeric: return "decimal";
40
default:
41
{
42
return "__UNKNOWN__" + column.NativeType;
43
}
44
}
45
}
46![]()
47
public string GetSqlDbType(ColumnSchema column)
48
{
49
switch (column.NativeType)
50
{
51
case "bigint": return "BigInt";
52
case "binary": return "Binary";
53
case "bit": return "Bit";
54
case "char": return "Char";
55
case "datetime": return "DateTime";
56
case "decimal": return "Decimal";
57
case "float": return "Float";
58
case "image": return "Image";
59
case "int": return "Int";
60
case "money": return "Money";
61
case "nchar": return "NChar";
62
case "ntext": return "NText";
63
case "numeric": return "Decimal";
64
case "nvarchar": return "NVarChar";
65
case "real": return "Real";
66
case "smalldatetime": return "SmallDateTime";
67
case "smallint": return "SmallInt";
68
case "smallmoney": return "SmallMoney";
69
case "sql_variant": return "Variant";
70
case "sysname": return "NChar";
71
case "text": return "Text";
72
case "timestamp": return "Timestamp";
73
case "tinyint": return "TinyInt";
74
case "uniqueidentifier": return "UniqueIdentifier";
75
case "varbinary": return "VarBinary";
76
case "varchar": return "VarChar";
77
default: return "__UNKNOWN__" + column.NativeType;
78
}
79
}
80
81
public int GetParamSize(ParameterSchema param)
82
{
83
switch (param.NativeType)
84
{
85
case "bigint": return 8;
86
case "binary": return 8;
87
case "bit": return 1;
88
case "char": return 1;
89
case "datetime": return 8;
90
case "decimal": return 4;
91
case "float": return 8;
92
case "image": return 8;
93
case "int": return 4;
94
case "money": return 8;
95
case "nchar": return param.Size;
96
case "ntext": return 16;
97
case "numeric": return 8;
98
case "nvarchar": return param.Size;
99
case "real": return 8;
100
case "smalldatetime": return 4;
101
case "smallint": return 2;
102
case "smallmoney": return 2;
103
case "sql_variant": return param.Size;
104
case "sysname": return param.Size;
105
case "text": return param.Size;
106
case "timestamp": return 8;
107
case "tinyint": return 1;
108
case "uniqueidentifier": return 16;
109
case "varbinary": return 16;
110
case "varchar": return param.Size;
111
default:
112
{
113
return -1;
114
}
115
}
116
}
117
118
public int GetParamSize(ColumnSchema column)
119
{
120
switch (column.NativeType)
121
{
122
case "bigint": return 8;
123
case "binary": return 8;
124
case "bit": return 1;
125
case "char": return 1;
126
case "datetime": return 8;
127
case "decimal": return 4;
128
case "float": return 8;
129
case "image": return 8;
130
case "int": return 4;
131
case "money": return 8;
132
case "nchar": return column.Size;
133
case "ntext": return 16;
134
case "numeric": return 8;
135
case "nvarchar": return column.Size;
136
case "real": return 8;
137
case "smalldatetime": return 4;
138
case "smallint": return 2;
139
case "smallmoney": return 2;
140
case "sql_variant": return column.Size;
141
case "sysname": return column.Size;
142
case "text": return column.Size;
143
case "timestamp": return 8;
144
case "tinyint": return 1;
145
case "uniqueidentifier": return 16;
146
case "varbinary": return 16;
147
case "varchar": return column.Size;
148
default:
149
{
150
return -1;
151
}
152
}
153
}
154
155
public string GetTypeAndSize(SchemaExplorer.ColumnSchema column)
156
{
157
string ret = String.Empty;
158
ret += column.NativeType;
159
if (column.NativeType == "varbinary" ||
160
column.NativeType == "nvarchar" ||
161
column.NativeType == "binary" ||
162
column.NativeType == "char" ||
163
column.NativeType == "nchar")
164
ret += GetSize(column.Size);
165
return ret;
166
}
167
168
public string GetSize(int size)
169
{
170
switch (size)
171
{
172
case 0:
173
return "";
174
case 2147483647:
175
return "";
176
case 1073741823:
177
return "";
178
case -1:
179
return "(MAX)";
180
default:
181
return "(" + size + ")";
182
}
183
}
184
185
public string GetComma(ColumnSchema column,ColumnSchemaCollection columns)
186
{
187
if (column.Name != columns[columns.Count-1].Name)
188
{
189
return ",";
190
}
191
else
192
{
193
return "";
194
}
195
}
196
public string GetAnd(ColumnSchema column,ColumnSchemaCollection columns)
197
{
198
if (column.Name != columns[columns.Count-1].Name)
199
{
200
return "And";
201
}
202
else
203
{
204
return "";
205
}
206
}
207![]()
208
public string GetPrimaryKeyType(TableSchema table)
209
{
210
if (table.PrimaryKey != null)
211
{
212
if (table.PrimaryKey.MemberColumns.Count == 1)
213
{
214
return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]);
215
}
216
else
217
{
218
throw new ApplicationException("This template will not work on primary keys with more than one member column.");
219
}
220
}
221
else
222
{
223
throw new ApplicationException("This template will only work on tables with a primary key.");
224
}
225
}
226![]()
227
public string GetClassName(TableSchema table)
228
{
229
string className = table.Name;
230
if (className.IndexOf("_") > 0)
231
{
232
className = table.Name.Substring(table.Name.IndexOf("_") + 1);
233
}
234
if (className.EndsWith("s"))
235
{
236
237
if(className.EndsWith("ies"))
238
{
239
className = className.Replace("ies","y");
240
return className.Substring(0,1).ToUpper()+className.Substring(1);
241
}
242
else
243
{
244
className= className.Substring(0, className.Length - 1);
245
return className.Substring(0,1).ToUpper()+className.Substring(1);
246
}
247
248
}
249
else
250
{
251
return className.Substring(0,1).ToUpper()+className.Substring(1);
252
}
253
}
254
255
public string GetparameteryName(TableSchema table)
256
{
257
return table.Name.Substring(0,1).ToLower()+table.Name.Substring(1);
258
}
259![]()
260
public string GetFiledName(ColumnSchema column)
261
{
262
return column.Name.Substring(0, 1).ToLower() + column.Name.Substring(1);
263
}
264![]()
265
public string GetPropertyName(ColumnSchema column)
266
{
267
return column.Name.Substring(0, 1).ToUpper() + column.Name.Substring(1);
268
}
269
270
public string GetTableName(TableSchema Table)
271
{
272
return Table.Name.ToString();
273
}
274
275
public string GetMorePrimaryOutput(TableSchema Table,ColumnSchema column)
276
{
277
if(Table.PrimaryKey.MemberColumns.Count >1)
278
{
279
return "";
280
}
281
else
282
{
283
if(column.IsPrimaryKeyMember)
284
{
285
return "Output";
286
}
287
else
288
{
289
return "";
290
}
291
}
292
}
293
294
public string GetInsertParam(TableSchema Table,ColumnSchema column)
295
{
296
if(Table.PrimaryKey.MemberColumns.Count >1)
297
{
298
return "["+column.Name+"]";
299
}
300
else
301
{
302
if(column.IsPrimaryKeyMember)
303
{
304
return "";
305
}
306
else
307
{
308
return "["+column.Name+"]";
309
}
310
}
311
}
312
313
public string GetInsertInOrOutParam(TableSchema Table,ColumnSchema column)
314
{
315
if(Table.PrimaryKey.MemberColumns.Count >1)
316
{
317
return GetMorePrimaryAt(Table,column)+column.Name;
318
}
319
else
320
{
321
if(column.IsPrimaryKeyMember)
322
{
323
return "";
324
}
325
else
326
{
327
return GetMorePrimaryAt(Table,column)+column.Name;
328
}
329
}
330
}
331
332
public string GetMorePrimaryAt(TableSchema Table,ColumnSchema column)
333
{
334
if(Table.PrimaryKey.MemberColumns.Count >1)
335
{
336
return "@";
337
}
338
else
339
{
340
if(column.IsPrimaryKeyMember)
341
{
342
return "";
343
}
344
else
345
{
346
return "@";
347
}
348
}
349
}
350
351
public string GetMorePrimaryComma(TableSchema Table,ColumnSchema column,ColumnSchemaCollection columns)
352
{
353
if(Table.PrimaryKey.MemberColumns.Count >1)
354
{
355
return GetComma(column,columns);
356
}
357
else
358
{
359
if(column.IsPrimaryKeyMember)
360
{
361
return "";
362
}
363
else
364
{
365
return GetComma(column,columns);
366
}
367
}
368
}
369
370
public bool IsMorePrimary(TableSchema Table)
371
{
372
if(Table.PrimaryKey.MemberColumns.Count >1)
373
{
374
return true;
375
}
376
else
377
{
378
return false;
379
}
380
}
381
382
public string GetMorePrimaryEqual(TableSchema Table,ColumnSchema column)
383
{
384
if(Table.PrimaryKey.MemberColumns.Count >1)
385
{
386
return "=";
387
}
388
else
389
{
390
if(column.IsPrimaryKeyMember)
391
{
392
return "";
393
}
394
else
395
{
396
return "=";
397
}
398
}
399
}
400
}
401![]()
402![]()

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

293

294

295

296

297

298

299

300

301

302

303

304

305

306

307

308

309

310

311

312

313

314

315

316

317

318

319

320

321

322

323

324

325

326

327

328

329

330

331

332

333

334

335

336

337

338

339

340

341

342

343

344

345

346

347

348

349

350

351

352

353

354

355

356

357

358

359

360

361

362

363

364

365

366

367

368

369

370

371

372

373

374

375

376

377

378

379

380

381

382

383

384

385

386

387

388

389

390

391

392

393

394

395

396

397

398

399

400

401

402
