封装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(其实很简单了).