[.Net开源分享]DataProvider便捷数据访问组件



引用内容 引用内容


1    DataProvider综述

1.1    背景

1.1.1    头痛的事情

    从无到有的建立数据访问层
    没有剥离业务的数据访问层,开发很容易,维护极困难
    传统的ADO.NET虽然强大,但是在开发效率和开发难度上并不尽如人意
    数据库表数量多,关系复杂,数据访问层工作量非常大
    SQL代码往往在运行时才发现错误,而非期待的编译阶段,影响项目质量
    Debug时一直要追踪到数据层的SQL语句或存储过程
    SQL虽然强大,但是从面向对象的角度来看,并不是一种高效和易于开发的手段。对新人来说,难以上手,线上问题的即时解决更是困难。

1.1.2    期望的情形

    以面对对象的方式,剥离出统一的数据访问接口,把层次间的耦合度降到最低。
    所有笨代码再也不用自己一行行Key出来
    多种数据库的支持

1.1.3    呼之欲出

经历一系列“苦其心智,劳其筋骨”的过程,DataProvider(以下简称DP)与PPCoder结伴而来。

1.2    DP是什么
.Net环境下,数据访问层的解决方案,包含一个数据访问组件DataProvider.Dll和一个代码自动化工具PPCoder。应用于采用多层架构开发的软件系统。

1.3    DP的特点

    数据访问层不用写一行代码,只需要设计数据库
    数据库至少有一种约束:标识、主键、唯一
    数据表之间可以配置主外键关系,从而实现关联查询模式
    支持Sql Server和MS Access数据库
    使用存储过程与Sql Server 交互,存储过程由PPCoder生成
    两种数据库可以无缝切换,在保证结构一致的前提下,只要重新生成一下实体类即可
    数据操作方法调用简单
    支持针对数据访问类的事务
    支持直接下sql语句
    强大的数据查询功能
    缓存数据
    多种查询限定符:范围、返回数量、Distinct、关联查询、不等于
    返回当前页:返回指定页的数据
    多类型返回:DataSet、Reader和DataBox

1.4    DP的好处

    把系统开发简化成数据库设计和业务功能的开发,节省人力
    降低系统耦合度,将数据访问与业务分离,提高项目可维护性
    数据库结构频繁改动时,项目不再受数据访问层的拖累
    支持多种数据库,提高系统扩展性

2    使用说明
    详见 产品手册DataProvider类库说明
3    Q&A

3.1    功能面

    有点晕,PPCoder和DataProvider是什么关系?
    DataProvider是个处理数据访问的中间件
    PPCoder是个配合它的辅助工具,帮助自动生成具有特定结构的实体类(或存储过程)

    DataProvider支持哪些数据库吗?
    目前支持Sql Server和MS Access两种。后续会考虑支持Oracle数据库。
    DP一个突出的特点就是结构相同的数据库可以无缝切换。如果目前出于成本和规模的影响使用MS Access作为数据库,那么将来想转化成Sql Server会非常容易。只需要使用PPCoder重新生成一下实体便可,原有代码无须任何改动。
3.2    应用面
    使用DP对数据库设计有什么特别需求吗?
    DP要求每张Table中至少有主键、标识或唯一键中的一个,以便唯一定位到一条数据。另外要特别注意的是生成实体的时候,每一个约束组合都会对应一个构造函数,所以不可以组合出来相同参数格式的约束组合。例如下面的设计是不合法的:定义RowID为主键,又定义一个ProductID为唯一键
    因为我要操作的数据很大,所以总是报“数据库超时”错误,有办法处理吗?
    超时是因为默认的SqlCommand的CommandTimeOut为30,而语句执行过程所需要的时间大于此时间,解决此问题的办法就是在Configration中初始CommandTimeOut为大一些的数字,如果不想设置超时时间,可以将此值设置为0
    我的数据表关系比较复杂,我如何获取串表?
    DP有三种办法可以串出符合相应条件的关系。每种方法应用于不同的情况
    如果只是两张表之间的串联关系,可以使用QueryJoin获取相应的数据,应用此方法需要在生成实体类前在数据库建立两张表的关联关系。
    另外一种自己直接向数据库中下Sql,然后通过ExecuteSql中的方法来检索数据。
    还有一方法就是在数据库中拉出View,然后用PPCoder生成针对此View的实体,DP会把View当作一个普通的表来看待,针对View DP只提供查询功能,查询方法与普通表一样。

3.3    产品面
    DP是石头里蹦出来的吗?
    否,DP是余波的作品,请多指教。
    更多信息见 http://blog.ppcode.com/article.asp?id=538

    DP不要钱吧?
    完全免费
    联系方式MSN:ppcode@gmail.com
    QQ:942365

    DP有没有考虑过开源
     DP已经开源,源码见下部链接

3.4    技术面
    DP有什么技术特点
    DP应用了.Net反射技术来对实体进行操作。
    自定义Attribute来记录栏位信息。
    PPCoder的生成应用了.Net框架中的CodeDOM
    Sql Server中使用存储过程交互,很大程度上提高了性能
    具体技术细节见类库说明


开源下载:
应用在.net2.0环境:
DataProvider_Net2.0
DataProvider_Net2.0_Source
coder2.0_net2.0_Source

应用在.net1.x环境:
DataProvider_Net1.x
DataProvider_Net1.x_Source
Coder2.0_Net1.x_Source

 

http://www.cnblogs.com/rexsp/archive/2007/12/04/983568.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值