使用场景
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
入门
我们先来看一下例子:
static void Main(string[] args)
{var age = 11;
Expression> exp = a => a.id == age; //表达式
SqlServerExpressionContext expContext = new SqlServerExpressionContext();//创建解析对象
expContext.Resolve(exp, ResolveExpressType.WhereSingle);//开始解析
var value = expContext.Result.GetString();//( [id] = @id0 )
var pars = expContext.Parameters;//@id:11
}
下面是调试结果:
通过上面的例子就能够完美的将表达式转换成Sql语句
教程案例
1、如何创建 ExpressionContext 解析对象
我们可以通过SqlSugar.DbType进行区分数据库 并且进行实例化
ExpressionContext expContext=null;switch(dbtype)
{caseDbType.MySql:
expContext= newMySqlExpressionContext();break;caseDbType.SqlServer