天天看点

强大的拉姆表达式转Sql 类库 - SqlSugar 隐藏功能之Lambda

1、Lambda to sql 一直是ORM中最难的功能之一,如果有现成的解析库那么自已写一个ORM难度将大大降低

2、通过Lambda作为KEY进行缓存操作,特别是仓储模式想要拿到表达式进行通用查询缓存 则需要用到表达式解析

3、学习爱好者,如果能够较深入的理Lambda如何去解成Sql,那么你对Lambda的理解将会更上一个层次,而不仅仅在使用上

SqlSugar除了有自带的ORM功能,还是一款强大的拉姆达解析器  ,并且是市场上独有 的拉姆达转Sql类库 

SqlSugar不仅小巧并且性能非常的好,毫不逊色于Dapper 甚至更加的优秀  ,至于性能别看其他人的测评 非常不靠谱,自个用了才知道,自个测了才知道

1、高性能  表达式解析速度远超EF 

2、功能非常完整 ,并且是产品级的解析类库,支持各种模式的解析

3、小巧你只要引用SqlSugar一个DLL就能使用 解析各种数据库 、支持Sql函数 、支持常用原生函数

.NET CORE / NET5   Nuget SqlSugarCore

.NET 4.5   Nuget SqlSugar 

.NET 4.0 Nuget SqlSuagr 4.x

我们先来看一下例子:

 下面是调试结果:

强大的拉姆表达式转Sql 类库 - SqlSugar 隐藏功能之Lambda

 通过上面的例子就能够完美的将表达式转换成Sql语句

 我们可以通过SqlSugar.DbType进行区分数据库 并且进行实例化

基本和写EF一样常用的都会支持

我们在写一个Like的例子

bool类型的解析是ORM解析的难点中的难点,情况多种多样

多样化的bool解释的支持

多表查询的支持,在多表查询中我们是需要加前缀的比如 我们想要 it.id 而不是id

支持实体类解析、查询单个字段解析、匿名对象解析

例如orderby(it=>it.Name) 像这种我们就需要拿到Name

统计单 个字段

支持的C#函数:

.ToString  .Contains  .Length

.ToLower  .ToUpper  .ToSubstring 

.Equals    .HasValue  .Replace

.EndsWith  .StartsWith  .Trim

.HasValue  .Value  .AddDay  .Date

和常用的Convert.ToInt32等等 

SqlFunc.函数

SqlFunc函数下面包含了大量SQL函数  

5.1 支持特性比如我表名和实体名不一样我们也可以实现

列名也非常容易

5.2 支持子查询

通上面的学习你们想写出下面的语法应该相当容易了 

实现上面的功能 总共用到Where的解析、列的解析和Select的解析

1、下面3个用到Where的解析

 2、下面1个用到列的解析

 3、下面1个用到Select的解析

  

你们的赞或者你们的 star 就是 开源者的动力 ,开源不容易和气生财 

https://github.com/sunkaixuan/SqlSugar     

下一篇文章 我会介绍如何使用 SqlSugar 实现WebFirst模式开发代码,领先CodeFirst和DbFirst的设计和开发理念,也我十多年开发经验的汇总