当我们通过上篇《打造自己的数据访问层一》已了解了.NET对数据库操作的基本原理,并就Ado.net对象的使用提出了几点疑问:
1、如何由系统来判断数据库型。
2、如何消除这些重复代码。
而上篇中也提出了一种解决思路,对ADO.NET对象进行封装,具体应该如何实施?
1、需要一个对象,该对象用于建立内存表与物理表的之间映射关系,解决数据查询、更新操作,形成了数据映射对象,定义为DataMapping。
2、每一个映射对象只与一张物理建立映射关系,如果有多个这样的对象同时操作,如何解决?这时就需要另一个对象,用于添加映射对象集合,打包映射对象操作,形成了数据执行者,定义为DataExecutor。
想想看,只需要这两个基本对象,就可以形成简单的数据访问层了。
先实现DataMapping,它应具备如下功能。
1、需要知道物理表的信息,表名、主键集、字段集。
2、需要知道映射的是什么类型的数据库,MSSql数据库、Oracle数据库、MySql数据库或者其他类型的数据库。
3、可查询数据,即填充内存表。
4、可更新数据,并且可设置更新操作方式。
5、可加入到事务中去。
根据上述功能,可初步设计出的DataMapping类:
publicclassDataMapping { publicDataMapping() { } ///<summary> ///填充数据集 ///</summary> publicvoidFill() { } ///<summary> ///设置更新命令 ///</summary> publicvoidSetCommands() { } ///<summary> ///设置数据提交事务 ///</summary> publicvoidSetTransaction() { } ///<summary> ///提交数据 ///</summary> publicboolUpdate() { } ///<summary> ///更新列名 ///</summary> publicstringColumns { get { returncolumns; } set { columns=value; } } privatestringcolumns=""; ///<summary> ///主键名 ///</summary> publicstringKeyColumns { get { returnkeyColumns; } set { keyColumns=value; } } privatestringkeyColumns=""; ///<summary> ///表名 ///</summary> publicstringTableName { get { returntableName; } set { tableName=value; } } privatestringtableName=""; } |