• 2.1语法基础_表达式目录树(EF底层原理的实现)


    目绿

      1.表达式目录树是什么?

      2.表达式目录树的作用?

      3.数据库最终需要的是sql语句,为什么使用EF框架写一些lamda就可以获取到数据

    1.表达式目录树本质是什么?

      1.表达式目绿树本质就是一种数据结构(二叉树),如m*n+2+x 会从右往左拆分成 >(M*n+2)+x>(M*n)+2>M*n

      2.拉姆达表达式是作为委托的一个参数,本质就是一个匿名方法,它只不过是可以快捷的声明表达式目绿树

    2.表达式目录树的作用:

    1.SQL查询语句拼接, (之前写sql查询条件都是根据一个个条件进行判断拼接,) 使用表达式目录树可以动态拼接

      为什么要用表达式目录树去拼接sql语句?

      1.以前老的写法是 多个条件进来 通过if一个个判断来进行组装sql语句 

         2.使用表达式目录数之后就可以写一个公共方法 提高代码重用性

       

    2.使用表达式目录树动态转换类,和硬编码性能几乎没啥差距 类与类之间的转换,使用表达式目录树把A类变成一个新的B类(结构要相同)

          一般实现方法:1.硬编码(写死),2.json序列化,3.表达式目录树

        实现方法使用反射获取到A类的属性和字段, 用表达式目录树拼接好一个新的B类,然后使用委托执行B类,最后使用泛型缓存 存储每个执行的委托(泛型缓存:为每个不同类型生成副本,所以不同类型只需要执行一次委托,后面就直接从缓存里面取) ,这样性能高,扩展性好,又解决了反射的性能问题,

    3.数据库最终需要的是sql语句,为什么使用EF框架写一些lamda就可以获取到数据(EF底层原理的实现?)

      EF框架之所以能够写lamda就能访问数据库实际底层原理就是:通过表达式目录树 来一步步解析拉姆达 拼接组装成数据库能访问的sql语句(解析的过程就是访问者模式)

       

      

  • 相关阅读:
    61组第二次团队作业
    饮水机电路图工作原理及电路图分析
    七种基础模拟电路的用法
    C语言判断一个数是奇数还是偶数
    F28335 UART串口配置及数据发送
    F28335 SPI配置及收发数据
    电容的九大功能
    查询接口---flask+python+mysql
    python参数传递
    java基础
  • 原文地址:https://www.cnblogs.com/LZXX/p/13529233.html
Copyright © 2020-2023  润新知