公司的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 }