• ORM Querier 基于TransactSQL解析的代码生成利器 帮助开发人员高效快速生成需要的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的地址,公司名称和联系人信息

    image

    由于使用了LLBL Gen ORM框架作为数据访问技术,上面的SQL语句显然不能直接拼凑成C#代码,需要进行转化,封装

    的过程比较相对容易,但是也需要耗费一些时间和精力。来看看我设计代码生成工具ORM Querier

    image

    在上面的文本框中输入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如何写,于是要经常查资料,后来干脆把资料整理出来,打印放到桌子上,经常看一下也不会忘记。如下图所示

    image

    这样的工作方法,效率又高了很多。但是也不是每天都会和代码打交道,有时候几个月的时间都是在修改报表,这一块的内容又忘记了。既然是有规律可寻的,就可以探索出合适的工具出来,把规律变成鼠标点击的简单动作,这样大大减少出错的机率,于是就产生了这个工具。试想一下,SQL查询技术,你不会忘记,在熟悉的SQL Server Management Studio中输入要查询的SQL语句,把它拷贝到ORM Querier中,执行Generate转化命令,就得到你需要的ORM代码片段。经过这样的改善,做事的效率又提高了很多,而且准确率高,不会出错。


    经常地思考如何改善工作效率,把一些规律性的知识和技术转化为软件或程序,经过几年的积累就形成了我的开发工具系列工具集Management Console。我在epn.codeplex.com中开放了一部分的Management Console的源代码,欢迎下载使用,希望能对你的工作和学习有所启发和帮助。

  • 相关阅读:
    六. 异常处理5.多重catch语句的使用
    六. 异常处理4.try和catch的使用
    六. 异常处理3.未被捕获的异常
    六. 异常处理2.异常类型
    对mysql数据库中字段为空的处理
    mysql 中实现多条数据同时更新
    java 用PDFBox 删除 PDF文件中的某一页
    java7 java MethodHandle解析
    【十四】jvm 性能调优实例
    【十三】jvm 性能调优工具之 jstack
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/2299304.html
Copyright © 2020-2023  润新知