关闭

如何打造自己的数据访问层二

发表于:2011-8-01 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:flysoul(cnblogs)    来源:51Testing软件测试网采编

  当我们通过上篇《打造自己的数据访问层一》已了解了.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="";
}

61/6123456>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号