Expression2Sql的一些语法更新
前言
前一阵子给大家介绍了一个可以将Expression表达式树解析成Transact-SQL的项目Expression2Sql。
之后得到了广大读者的一些好评,也使得博主更有动力继续更新下去,然后一些园友也给出了一些极具建设性的意见,也有部分园友反馈了一些bug。最近一段时间,博主也集中精力,抽出一些时间做了一次更新,本篇文章将介绍本次更新的内容。
简单易用,几分钟即可上手使用,因为博主在设计Expression2Sql的时候就尽可能的按照Transact-SQL的语法语义风格来设计,只要调用者熟悉基本的Transact-SQL语法即可瞬间无忧开码,大大降低了学习Expression2Sql的成本,甚至零成本。对象化操作,链式编程,支持多表复杂关联查询,任意组装sql,自动生成表别名,参数化赋值,防止sql注入,支持SQLServer、MySQL、Oracle、SQLite等多数据库,生成极度美观的sql字符串(格式化)等诸多优点。
Expression2Sql的设计初衷就是职责非常单一、干净清爽,纯粹就是输入表达式树,然后经过它的解析之后,便可返回Transact-SQL给调用方。所以它的使用场景主要是用于和第三方的ORM或者是基于ado.net的原生DbHelper帮助类做对接,使其能够支持对象化、表达式树的链式编程。
具体详情可以前往此篇博文一探究竟:介绍一个可以将Expression表达式树解析成Transact-SQL的项目Expression2Sql
感谢大家踊跃提意见,不少园友建议用Expression2Sql打造一个O/R mapping数据访问组件,没错,这也是Expression2Sql的优势。
可以,在下一篇博文中,博主就讲解 Expression2Sql + DbHelper + Mapping = ORM ,最大化解耦拆分成独立的组件。
伪代码如下:
public static List<T> Query<T>(ExpressionToSql<T> expression)
{
string sql = expression.Sql;
DataTable dt = DbHelper.ExecuteDataTable(sql, expression.DbParams);
List<T> list = Mapping.ToListEntity<T>(dt);
return list;
}
在做形参赋值时报错,现已解决。


对于括号优先级的处理,现已支持。


增加Insert方法

给查询字段取别名


提供静态类和实例类的两种调用方式
Expression2Sql组件的核心对象ExpressionToSql是实例类,调用的时候还得对象实例化,然后通过构造函数注入数据库sql语法分析器。但是博主考虑到很多时候,工作或学习当中,一般单数据库类型居多,所以使用静态类来调用,会非常的方便快捷。于是博主抛砖引玉,封装了基于SQLServer、MySQL、Oracle、SQLite数据库的的静态类。当然调用方可以借鉴这些静态类,自行封装这4种常用数据库之外的静态类。

Expression2Sql的一些语法更新的更多相关文章
- Java语法笔记
目录 知识点 不支持 恶心事 与C#的区别 组件 学习资料 母版页 知识点 类 静态方法,即可以在类上被调用,也可以在实例对象上被调用. Java类 先执行静态构造函数,再执行静态方法或静态字段,所以 ...
- Swift语法入门
正文参考: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Progra ...
- ANTLR4权威指南 - 第7章 通过特定应用程序代码解耦语法
第7章 通过特定应用程序代码解耦语法 到目前为止,我们已经知道了怎么用ANTLR的语法来定义语言了,接下来我们要给我们的语法注入一些新的元素了.就语法本身而言,其用处并不大,因为它只能告诉我们一个用户 ...
- JavaScript中if语句优化和部分语法糖小技巧推荐
前言 在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰. 除 ...
- golang笔记——命令
1.GO命令一览 GO提供了很多命令,包括打包.格式化代码.文档生成.下载第三方包等等诸多功能,我们可以通过在控制台下执行 go 来查看内置的所有命令 下面来逐个介绍,也可以详细参考 https:// ...
- [知识库分享系列] 二、.NET(ASP.NET)
最近时间又有了新的想法,当我用新的眼光在整理一些很老的知识库时,发现很多东西都已经过时,或者是很基础很零碎的知识点.如果分享出去大家不看倒好,更担心的是会误人子弟,但为了保证此系列的完整,还是选择分享 ...
- [cocos2dx]2.2到3.1(3.0)升级帮助
摘要: cocos2dx 是一款优秀的多平台,专为2D游戏设计的引擎. 在活跃的开源社区的推进下, 越发稳定和强大. 2.x -> 3.x的更新幅度很大, 性能的提升和功能的丰富也非常明显. 但 ...
- 快速构建express项目
构建node项目 github地址 https://github.com/haoyongliang/quickly-create-node-project.git 创建最基本的node项目 1.全局安 ...
- HTML5规范的本地存储
在HTML5 中定义了两种本地存储的,Web Storage 和本地数据库 SQL Database . 用来检查判断浏览器是否支持 Web Storage if(window.localStorag ...
随机推荐
- 任务9user表建表语句
create table user( id int not null auto_increment primary key, username ) not null default '', pwd ) ...
- Spring boot mybatis项目启动后一直刷日志的bug修复……
最近接手一个项目,使用的框架是springboot+mybatis: 其中持久层是使用mybatis集成的,sql是配置在mapper.xml文件中: 然后呢,有时候做新功能的时候,往xml文件中增加 ...
- 在IE下,如果在readonly的input里面键入backspace键,会触发history.back()
在IE下,如果在readonly的input里面键入backspace键,会触发history.back(), 用以下jQuery代码修正之 $("input[readOnly]" ...
- CentOS 7 启动、重启、chkconfig等命令已经合并为systemctl
CentOS 7系统服务启动.重启.设置服务启动项命令以合并为,systemctl . 现在用service 或/etc/init.d/命令,重启,重新启动,停止等没效果,因为命令合并为systemc ...
- vs2013 括号自动配对样式设置
在做公司一个项目的时候,需要用到VS2013编辑器,用了之后感觉有点不太爽. 在js文件里定义了方法之后,由于方法比较长,写完之后再回来看就有些不方便,尤其是方法里还有几个判断,后人再看的时候会有些 ...
- CentOS-7下安装MySQL5.6.22
参考: http://www.2cto.com/database/201501/371451.html 安装环境 CentOS版本:CentOS-7 因为之前安装过,没有成功,但是有之前安装的文件 ...
- Hadoop:操作 Hadoop Cluster
启动Hadoop 当完成所有的必要配置后,将HADOOP_CONF_DIR目录中的所有配置文件复制到所有机器,建议将HDFS和YARN后台进程一不同的用户身份运行,比如运行HDFS进程们的用户为hdf ...
- oracle细节
1.oracle中NVL的含义: 如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值. 2.Oracle中in和exists的区别: 1).sel ...
- 3.Git的诞生和其分布式的优点
Git的诞生 省略了,喜欢的可以看百度. 分布式的优点 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完 ...
- wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
初学wex5,先理理让人容易混淆的三个概念: 一 基本概念: 1 wex5组件,顾名思义,在编辑窗口右侧的组件集合里的,都是wex5基于开源自创的组件,并封装了一套自已的方法.目的是为了方便.相关方法 ...