灰太狼

先有司,赦小过,举贤才

 

封装SQL2005数据库操作的Framework

你还在为每个逻辑书写一堆SqlParameters[]或者SqlDataReader[]吗?

你还在写代码生成器或者通过使用代码生成器去生成dao层代码吗?(生成的代码太死板)

你还在使用ORM来配置映射文件、编写实体,来实现操作数据库吗?(ORM配置写起来很繁琐)

你还在通过大量存储过程来封装SQL逻辑、约定传入传出参数吗?(跟数据库太亲密了)

好了,请不要再做以上的繁琐工作,通过我最新的框架来解决你们的问题。

 

无论是sql2000还是sql2005数据库操作,无非就是三个地方要注意:

1.sql语句

2.参数

3.返回的结果(含实体列表)

基本上所有的操作都由这三部分组成,如果我们的程序是三层架构,那么我们的返回的结果可能就是实体层。实际上实体层可以包含很多东西,比如传入参数也是个实体,返回结果列表也是实体组成。

(一)、我们先围绕着返回结果的实体来进行延伸,把SQL语句通过Attribute特性附加到实体上,那么我们的业务逻辑层,只需要根据我需要取的数据实体去执行它Attribute上的SQL语句,并返回该实体列表结果值。

(二)、那么同样我们围绕着参数的实体来进行延伸,如果我们的业务逻辑层需要执行一个Insert/Update/Delete操作,只需要根据我该参数实体去执行它Attribute上的SQL语句,并返回影响的行数。

(三)、如果业务逻辑的某一个操作既有参数实体,又有返回结果实体,我们就以返回实体为主,调用时将参数实体赋值,执行返回实体上的SQL。

 

通过以上思路,基本上我们的业务逻辑层只需要寻找我需要的实体即可,而之前的Dao完全就消失了,它与我们之前的Model层合成了一个新的Model层,该新Model层包含了TSQL和参数。

按照这个思路,我书写这个框架时解决的几个重要难点在于:

1.如何将参数实体的值转换为SqlParameters[].

2.如何将查询结果SqlDataReader转换为返回结果实体.

3.如何执行实体上附着的SQL语句.

大家可以通过查看源代码了解我的思路,很抱歉代码里没有过多备注.

 

框架已经写好了,源代码里含有一个测试的Demo,如何使用这个框架很简单,注意一下步骤:

1.配置Config:<add key="ConnString" value="server=.;uid=sa;pwd=;database=msdb"/>

2.在Model的Class上添加Select(此次只实现了查询)的Attribute,写上Column,Table,默认排序方式.

3.业务逻辑层使用时,直接调用方法SelectHelper.Read<T>即可返回T的实体列表,当然方法含TSQL参数和分页条件.

使用效果截图:

 

 

源代码下载: sql2005.Framework 含SQL2005排序的新功能,目前暂实现了Select的封装,后期会实现Insert,update,Delete(其实很简单了).

posted on 2009-11-08 01:25  灰太狼2号  阅读(999)  评论(8编辑  收藏  举报

导航