惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
T
Threatpost
Latest news
Latest news
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
AI
AI
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Securelist
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
Cisco Talos Blog
Cisco Talos Blog
云风的 BLOG
云风的 BLOG
AWS News Blog
AWS News Blog
GbyAI
GbyAI
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
美团技术团队
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
S
Schneier on Security
博客园 - 聂微东
V2EX - 技术
V2EX - 技术
T
Troy Hunt's Blog
SecWiki News
SecWiki News
S
Secure Thoughts
B
Blog RSS Feed
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
腾讯CDC
H
Heimdal Security Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
月光博客
月光博客
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Privacy International News Feed

博客园 - 灰太狼2号

用Nginx+Lua+Redis给百度鹰眼API服务搭建缓存服务中间件(记录过程) 开源.net微博组建维护团队 [转]Team Foundation Server 2008 單一伺服器簡易安裝說明 (Win2003+SQL2005+TFS2008) CHFMake代码生成器Beta版下载 Huntor中国CRM评估报告连载(二) Huntor中国CRM评估报告连载(一) 汉拓中国CRM评估报告简介 子曾经曰过:先有司,赦小过,举贤才 山寨版Windows.Forms用户控件 山寨版WCF 通过SQL语句生成日历表格 浅谈WebControl中的ScriptManager与ClientScriptManager的区别(附上一个弹出多选的控件源代码) 互联网公司如何有效执行流程的心得 自定义方法的C#代码生成器 [导入].Net CLR Hosting原理及实践 [导入]CLR引擎初始化分析 [导入]CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列) [导入]CLR探索系列:GC 中的Card table和Brick Table(垃圾回收系列) [导入]CLR探索系列:GC Heap架构及其实现(垃圾回收系列)
封装SQL2005数据库操作的Framework
灰太狼2号 · 2009-11-08 · via 博客园 - 灰太狼2号

你还在为每个逻辑书写一堆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(其实很简单了).