zoukankan      html  css  js  c++  java
  • CYQ.Data 数据框架 V5 的语法糖 外置开源原理解析 [类似lambda表达式]

    首先看一下CYQ.Data 经典的使用手法:

    using(MAction action=new MAction(表名))

    {

       action.Select(where).Bind(列表控件);

    }

    CYQ.Data 在很多地方是直接使用原生的sql语法的,示例如:

    1:where条件:如:action.Select("ID>1 or UserName='cyqdata'")

    每个传入的where条件,都会经过一个高强度的sql防注入函数,过滤特殊字符或函数,因此安全级别是很高的。

    2:多表查询:

    new MAction(" (select a.name,b.* from a,b) newtablename");

    有小部分人士,似乎不怎么喜欢原生的sql语法,于是V5就简单的扩展了一下,来让这小部分人士去构建自己的语法。

    比如我们需要新的语法如下:

    1:对于where条件:

    action.Select(User.ID>1 & User.UserName=="cyqdata");

    2:对于构造表视图:

    new MAction(T.Skin.LeftJoin(T.User).On(Skin.UserID==User.ID));

    原理分析:

    对于新的语法糖,没有编绎器的支持,我们只能借助于重载一些运行符号或方法来实现这些。

    比如:

    重载

  • 相关阅读:
    hdu 4710 Balls Rearrangement()
    hdu 4707 Pet(DFS水过)
    hdu 4706 Children's Day(模拟)
    hdu 4712 Hamming Distance(随机函数暴力)
    csu 1305 Substring (后缀数组)
    csu 1306 Manor(优先队列)
    csu 1312 榜单(模拟题)
    csu 1303 Decimal (数论题)
    网络爬虫
    Python处理微信利器——itchat
  • 原文地址:https://www.cnblogs.com/cyq1162/p/2073416.html
Copyright © 2011-2022 走看看