快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

AG亚游国际…AG8国际游戏厅:ORM映射框架总结SQL 语句生成组件



1.SQL 语句天生组建

之前说过ORM框架中有一个异常紧张的组件,那便是SQL语句天生组件。SQL语句天生组件,顾名思义便是用于天生sql语句的AG亚游国际…AG8国际游戏厅一个组件。之前的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*AG亚游国际…AG8国际游戏厅 化操作和数据库语句操作的过渡

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 {

24public interface IDbFactory : IDisposable

25{

26///

27/// 根据实体工具公共接口创建插入的sql语句

28///

29///

实体公共接口

30///

创建sql语句对应占位符参数

31///

32string CreateInsertSql(IEntity entity, out IDataParameter[] param);

33

34///

35/// 根据实体类型创建插入sql语句

36///

37///

实体类型

38///

实体工具

39///

创建sql语句对应占位符参数

40///

41string CreateInsertSql(Type type, object value, out IDataParameter[] param);

42

43///

44/// 根据泛型类型创建插入sql语句

45///

46/// 泛型类型

47///

泛型实体类

48///

创建sql语句对应占位符参数

49///

50string CreateInsertSqlT>(T t, out IDataParameter[] param) where T : IEntity;

51

52///

53/// 根据实体工具公共接口创建改动的的sql语句

54/// 该sql语句是根据主键列改动的

55///

56///

实体公共接口

57///

创建sql语句对应占位符参数

58///

59string CreateUpdateSql(IEntity entity, out IDataParameter[] param);

60

61///

62/// 根据实体工具类型创建改动的的sql语句

63///

64///

实体类型

65///

实体工具

66///

创建sql语句对应占位符参数

67///

68string CreateUpdateSql(Type type, object value, out IDataParameter[] param);

69

70///

71/// 根据实体工具公共接口创建改动的的sql语句

72/// 该sql语句是根据一个特定的属性作为改动前提的

73///

74///

实体公共接口

75///

创建sql语句对应占位符参数

76///

属性名称

77///

78string CreateUpdateSql(IEntity entity, out IDataParameter[] param, string propertyName);

79

80///

81/// 根据实体工具类型创建改动的的sql语句

82/// 该sql语句是根据一个特定的属性作为改动前提的

83///

84///

实体类型

85///

实体工具

86///

创建sql语句对应占位符参数

87///

属性名称

88///

89string CreateUpdateSql(Type type, object value, out IDataParameter[] param, string propertyName);

90

91///

92/// 根据实体工具公共接口创建改动的的sql语句

93/// 该sql语句是根据多个特定的属性作为改动前提的

94///

95///

实体公共接口

96///

创建sql语句对应占位符参数

97///

属性名称

98///

99string CreateUpdateSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);

100

101///

102/// 根据实体工具类型创建改动的的sql语句

103/// 该sql语句是根据多个特定的属性作为改动前提的

104///

105///

实体类型

106///

实体工具

107///

创建sql语句对应占位符参数

108///

属性名称

109///

110string CreateUpdateSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);

111

112///

113/// 根据实体工具公共接口创建改动的的sql语句

114/// 该sql语句是根据查询组建创建的

115///

116///

实体公共接口

117///

创建sql语句对应占位符参数

118///

查询前提组件

119///

120string CreateUpdateSql(IEntity entity, out IDataParameter[] param, ConditionComponent component);

121

122///

123/// 根据实体工具公共接口创建删除sql语句

124/// 该sql语句是根据实体主键删除

125///

126///

实体公共接口

127///

创建sql语句对应占位符参数

128///

129string CreateDeleteSql(IEntity entity, out IDataParameter[] param);

130

131///

132/// 根据实体工具类型创建删除sql语句

133/// 该sql语句是根据实体主键删除

134///

135///

实体类型

136///

实体工具

137///

创建sql语句对应占位符参数

138///

139string CreateDeleteSql(Type type,object value,out IDataParameter[] param);

140

141///

142/// 根据实体工具公共接口的某个属性创建删除sql语句

143/// 该sql语句是根据实体属性删除

144///

145///

实体公共接口

146///

创建sql语句对应占位符参数

147///

实体属性名称

148///

149string CreateDeleteSql(IEntity entity, out IDataParameter[] param, string propertyName);

150

151///

152/// 根据实体工具类型的某个属性创建删除sql语句

153/// 该sql语AG亚游国际…AG8国际游戏厅句是根据实体属性删除

154///

155///

实体类型

156///

实体工具

157///

创建sql语句对应占位符参数

158///

实体属性名称

159///

160string CreateDeleteSql(Type type, object value, out IDataParameter[] param, string propertyName);

161

162///

163/// 根据实体工具公共接口的多个属性创建删除sql语句

164/// 该sql语句是根据实体多个属性删除

165///

166///

实体公共接口

167///

创建sql语句对应占位符参数

168///

实体属性名称数组

169///

170string CreateDeleteSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);

171

172///

173/// 根据实体工具类型的多个属性创建删除sql语句

174/// 该sql语句是根据实体多个属性删除

175///

176///

实体了姓

177///

实体工具

178///

创建sql语句对应占位符参数

179///

实体属性名称数组

180///

181string CreateDeleteSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);

182

183///

184/// 根据实体工具公共接口的多个属性创建删除sql语句

185/// 该sql语句使根据查询组建来创建的

186///

187///

实体公共接口

188///

创建sql语句对应占位符参数

189///

实体属性名称数组

190///

191string CreateDeleteSql(IEntity entity, out IDataParameter[] param, ConditionComponent component);

192

193///

194/// 根据实体的公共接口创建查询单行数据的sql语句

195/// 该sql语句是根据数据库表的主键来查询的

196///

197///

实体公共接口

198///

创建sql语句对应占位符参数

199///

200string CreateSingleSql(IEntity entity, out IDataParameter[] param);

201

202///

203/// 根据实体的公共接口创建查询单行数据的sql语句

204/// 该sql语句是根据实体的响应属性来查询

205///

206///

实体公共接口

207///

创建sql语句对应占位符参数

208///

209string CreateSingleSql(IEntity entity, out IDataParameter[] param, string[] propertyNames);

210

211///

212/// 根据实体类型创建查询单行数据的sql语句

213/// 该sql语句是根据实体的响应属性来查询

214///

215///

实体类型

216///

实体工具

217///

创建sql语句对应占位符参数

218///

属性名称数组

219///

220string CreateSingleSql(Type type, object value, out IDataParameter[] param, string[] propertyNames);

221

222///

223/// 根据实体的类型创建查询sql语句

224///

225///

实体类型

226///

227string CreateSingleSql(Type entityType);

228

229///

230/// 根据实体的类型创建查询sql语句,

231/// 该措施指定主键值

232///

233///

实体类型

234///

主键值

235///

创建sql语句对应占位符参数

236///

237string CreateSingleSql(Type type, object pkPropertyValue,out IDataParameter[] param);

238

239///

240/// 根据实体的类型创建查询该实体工具对应数据库表的所稀有据的sql语句

241/// 该sql语句用于查询所稀有据,并转换为响应List 聚拢

242///

243///

实体的类型

244///

245string CreateQuerySql(Type type);

246

247///

248/// 根据实体的某个属性创建根据该属性字段查询数据的sql语句

249/// 该sql语句是应用参数中属性对应字段作为前提查询的

250///

251///

实体类型

252///

属性名称

253///

属性值

254///

sql语句占位符参数

255///

256string CreateQueryByPropertySql(Type type, string propertyName, object value, out IDataParameter[] param);

257

258///

259/// 根据实体的某些属性创建根据该些属性字段查询数据的sql语句

260/// 该sql语句是应用参数中属性对应字段作为前提查询的,并且该

261/// 属性聚拢都是根据and前提组装的

262///

263///

实体类型

264///

属性-值聚拢

265///

sql语句占位符参数

266///

267string CreateQueryByPropertySql(Type type, IDictionarystring, object> dic, out IDataParameter[] param);

268

269///

270/// 根据实体的某些属性创建根据该些属性字段查询数据的sql语句

271/// 该sql语句是应用参数中属性对应字段作为前提查询的,并且查

272/// 询是根据查询组建来创建

273///

274///

实体类型

275///

属性-值聚拢

276///

sql语句占位符参数

277///

查询组建

278///

279string CreateQueryByPropertySql(Type type, IDictionarystring, object> dic, out IDataParameter[] param, ConditionComponent component);

280

281///

282/// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句

283/// 该措施创建的sql语句主如果用于查询数据行数

284///AG亚游国际…AG8国际游戏厅

285///

实体类型

286///

聚合函数罗列类型

287AG亚游国际…AG8国际游戏厅///

288string CreateConverageSql(Type type, Converage converage);

289

290///

291/// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句

292/// 该措施创建的sql语句主如果用于统计查询(最大年夜值,最小值,乞降,匀称值,数据行数)

293///

294///

实体类型

295///

聚合函数罗列类型

296///

聚合函数感化的属性名称

297///

298string CreateConverageSql(Type type, Converage converage, string propertyName);

299

300///

301/// 根据实体类型来创建该实体对应数据库表的聚合函数查询sql语句

302/// 该措施创建的sql语句主如果用于统计查询(最大年夜值,最小值,乞降,匀称值,数据行数),

303/// 同时该sql是有前提查询的

304///

305///

实体类型

306///

聚合函数罗列类型

307///

聚合函数感化的属性名称

308///

查询前提属性键值

309///

查询前提组建工具

310///

311string CreateConverageSql(Type type, Converage converage, string propertyName, IDictionarystring, object> dic, out IDataParameter[] param, ConditionComponent component);

312

313///

314/// 根据占位符名称创建参数

315///

316///

占位符名称

317///

318IDataParameter CreateParameter(string name);

319

320///

321/// 根据占位符和值创建参数

322///

323///

占位符名称

324///

占位符的值

325///

326IDataParameter CreateParameter(string name, object value);

327

328///

329/// 根据占位符名称,类型和值创建参数

330///

331///

占位符名称

332///

参数的类型

333///

参数的值

334///

335IDataParameter CreateParameter(string name, DataType type, object value);

336

337///

338/// 根据占位符的名称,类型和大年夜小创建参数

339///

340///

占位符名称

341///

参数类型

342///

参数值大年夜小

343///

344IDataParameter CreateParameter(string name, DataType type, int size);

345

346///

347/// 根据占位符的名称,类型,大年夜小和值创建参数

348///

349///

占位符名称

350///

参数类型

351///

参数大年夜小

352///

参数值

353///

354IDataParameter CreateParameter(string name, DataType type, int size, object value);

355

356///

357/// 根据占位符名称和类型创建参数

358///

359///

占位符名称

360///

占位符类型

361///

362IDataParameter CreateParameter(string name, DataType type);

363}

364 }

365

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: