ORM Querier 基于Transact-SQL解析的代码生成利器 帮助开发人员高效快速生成需要的ORM代码
对于习惯于用ORM来开发系统的开发人员来说,几乎不用写SQL语句,但是也要针对ORM框架,来设计合适的查询,ORM框架会生成合适的T_SQL语句并发送到SQL Server中。由于ORM框架有好几种,比如NHibernate,LLBL Gen,Entity Framwork,掌握熟练的SQL查询技术在这里没有用武之地,真是可惜。这篇文章是介绍我的Management Console中的一个工具程序,把SQL查询语句转化为ORM代码片段,相当于一个代码生成工具。
选定Northwind数据库的客户表为例子,它的脚本是这样的,这里省略了表的约束代码。
CREATE TABLE [dbo].[Customers] ( [CustomerID] [nchar] (5) COLLATE Chinese_PRC_CI_AS NOT NULL, [CompanyName] [nvarchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL, [ContactName] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL, [ContactTitle] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL, [Address] [nvarchar] (60) COLLATE Chinese_PRC_CI_AS NULL, [City] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL, [Region] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL, [PostalCode] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL, [Country] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL, [Phone] [nvarchar] (24) COLLATE Chinese_PRC_CI_AS NULL, [Fax] [nvarchar] (24) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY]
现在要开发一个查询客户信息的程序,找出客户ID为ANATR的地址,公司名称和联系人信息
由于使用了LLBL Gen ORM框架作为数据访问技术,上面的SQL语句显然不能直接拼凑成C#代码,需要进行转化,封装
的过程比较相对容易,但是也需要耗费一些时间和精力。来看看我设计代码生成工具ORM Querier
在上面的文本框中输入SQL语句,点击Generate生成按钮,同下面自动生成了C#代码。如果你熟悉LLBL Gen框架的API接口,拷贝这片代码到C#中是可以直接运行的,相当于我们的SQL查询语句的ORM版形式。
目前因为只用到了LLBL Gen,所以它只生成了基于LLBL Gen的代码片段。它的基本原理是解析T_SQL语句,生成映射的C#语句,所以,推广到生成NHibernate或是Entity Framework不是难题。
这个工具我酝酿了一段时间,一方面要推广自己的EPN快速开发框架,面对大量的不熟悉LLBL Gen这个框架的用户。另一方面,把理论变成代码工具实践,也需要一些技术上的判断与实作。
我在接触LLBL Gen这个ORM框架时,也会经常忘记它的SELECT是如何的写,UPDATE如何写,于是要经常查资料,后来干脆把资料整理出来,打印放到桌子上,经常看一下也不会忘记。如下图所示
这样的工作方法,效率又高了很多。但是也不是每天都会和代码打交道,有时候几个月的时间都是在修改报表,这一块的内容又忘记了。既然是有规律可寻的,就可以探索出合适的工具出来,把规律变成鼠标点击的简单动作,这样大大减少出错的机率,于是就产生了这个工具。试想一下,SQL查询技术,你不会忘记,在熟悉的SQL Server Management Studio中输入要查询的SQL语句,把它拷贝到ORM Querier中,执行Generate转化命令,就得到你需要的ORM代码片段。经过这样的改善,做事的效率又提高了很多,而且准确率高,不会出错。
经常地思考如何改善工作效率,把一些规律性的知识和技术转化为软件或程序,经过几年的积累就形成了我的开发工具系列工具集Management Console。我在epn.codeplex.com中开放了一部分的Management Console的源代码,欢迎下载使用,希望能对你的工作和学习有所启发和帮助。