公司的orm框架在dapper的基础上扩展了一套表达式的方法,当时就研究了一下,把学习过程和结果记录下来,和大家分享。

有人会说重复造轮子没必要,直接上EF。

从我的角度来看重复造轮子的原因有以下三种:

1、研究造轮子的原理

2、轮子不满足现在的开发需要

3、装B

表达式树的作用

最常用到的无非就是ORM的删查改的条件,ORM就是在ado.Net的基础上封装了一层表达式,最后还是将表达式解析成sql,由ado.Net去执行。

那么我们能将表达式树解析成字符串,那么也能反过来。例如运费系统,在后台设置定义好一套计算规则。例如:对应不同的发货渠道,什么重量取哪个区间的费用,多于哪个阶段的费用还要额外费用。我们可以通过解析这套计算规则拼装好表达式树传入参数进行计算。。。

还有别的在评论补充下。。。

不扯多,现在我们只拿解析表达式树来学习。

创建表达式

首先创建4个属性的Users类

 1 namespace CG.ExpressionProject
 2 {
 3     /// <summary>
 4     /// 用户类
 5     /// </summary>
 6     public class Users
 7     {
 8         public string Name { get; set; }
 9 
10         public int Phone { get; set; }
11 
12         public int Sex { get; set; }
13 
14         public int Age { get; set; }
15     }
16 }
View Code

相关文章: