ShadowSql包含sql的绝大多数功能

按可执行功能分为Insert、Delete、Update、Select(SingleSelect)、CreateTable、DropTable和TruncateTable

以上功能还包含子功能,有Table、AliasTable、DB、TableView、Column(Field)、Query(SqlQuery)、Logic、Cursor、SelectField和SubQuery等

一、Table(表)用于映射数据表

Table可以包含Column,方便使用Column来拼接sql,也可以用来验证sql的合法性,比如不存在的列不能使用,需要抛异常

Table的接口是ITable、默认实现类有SimpleTable、Table及TableSchema

SimpleTable只是表的占位符,不包含列,但不包含可以使用Field拼接sql(篇幅有限.这里不展开)

Table可以包含列,使用Column拼接sql会验证是否存在,当然也可以使用Field绕过验证,这看个人或团队的喜好和标准

对于Insert和Update操作,如果没有预先定义好列,后面操作就要每次手动指定列,就不是很方便

最佳实践是把Table和它的Column定义好做为配置,或注入到IOC里面

TableSchema主要用于CreateTable,CodeFIrst生成表,还有表需要增加Schema限定符

当然还可以自定义Table类型

二、DB(数据库)负责管理Table

接口为IDB,有3个实现类,DB和SimpleDB和DBSchema

DB管理Table

SimpleDB管理SimpleTable

DBSchema管理TableSchema

Table可以独立存在,DB并不是必须的,DB也不参与sql拼写

三、AliasTable(别名表)

AliasTable就是给Table取一个别名

AliasTable很重要,在联表和子查询的时候都需要用到,用来区分不同表的不同字段

还有自联表的情况,必须有别名才会不出错

AliasTable的接口是IAliasTable,默认实现类是TableAlias

当然自定义AliasTable也是不错的选择,在联表查询是香的狠

四、TableView

TableView就是接口ITableView,表示一个表或者查询视图

Table、AliasTable、Query(DataQuery)、Cursor都继承了ITableView

从概念上讲TableView分为6种,分别为Table、AliasTable、MultiTable(及JoinTable)、GroupByTable、GroupByAliasTable、GroupByMulti6种

这6种几乎贯彻了查询的绝大部分过程

DQuery和SqlQuery分8种(JoinTable和JoinOn特殊处理)

SelectField分这6种

Cursor分这6种

Select和SingleSelect也分这6种

每种特殊处理,以便更好的支持其特殊的情况

五、SqlQuery

SqlQuery通过原生sql和逻辑来查询

Table、AliasTable、MultiTable(及JoinTable)用Where查询

GroupByTable、GroupByAliasTable、GroupByMulti用Having

JoinOn用On查询

如果要嵌套AND和OR是通过调用ToAnd和ToOr来实现

六、Query

Query通过逻辑运算来查询,方法名为And和Or

每个逻辑对象都支持Not方法用来支持逻辑非运算

逻辑非尽量少用,在大部分情况下会有替代方案的

一般逻辑对象是Field+运算符+值(也可以是字段或参数),每个运算符都有一个反运算符,这种情况代替逻辑非应该是更好的选择

七、Cursor

Cursor意思是游标,功能就是分页+OrderBy

where条件内数据量还是很多,有时只需要筛选其中一部分,这时需要移动游标来截图其中一部分

支持Asc、Desc和OrderBy来排序,其中OrderBy是支持原始sql的

Skip和Take就是自动游标的方法,这个Linq是一致的

八、SelectFields

SelectFields用来筛选部分字段,默认*

通过方法Select、Alias和SelectCount来筛选字段

九、Select

用来组装ITableView(Query、Cursor)和SelectFields

一个是行的筛选,另一个是列的筛选

这样就可以生成完成的Select语句了

十、Insert分3种

SingleInsert用来插入单条数据

MultiInsert用来一次性插入多条数据

SelectInsert用来插入Select的结果

十一、Delete分为3种

TableDelete、AliasTableDelete和MultiTableDelete

其中MultiTableDelete含联表

十二、Update分为3种

TableUpdate、AliasTableUpdate和MultiTableUpdate

其中MultiTableUpdate含联表

十三、TableDelete清空表

十四、CreateTable和DropTable生成和删除表

CreateTable和DropTable放在独立的子项目Shadow.DDL里面

是因为大多数项目不需要这些功能,为了尽量精简

以上是ShadowSqlh功能的简介,感兴趣的同学可以去github查看源码。

仓库地址: https://github.com/donetsoftwork/Shadow。
如果大家喜欢请动动您发财的小手手帮忙点一下Star。

ShadowSql之功能简介的更多相关文章

  1. DYN-B201 Dynamics CRM 云生产力解决方案与功能简介

    DYN-B201 Dynamics CRM 云生产力解决方案与功能简介 讲师:王健.林松涛Dynamics CRM 云产品正式落地中国,CRM 与 Azure.O365 深度整合无缝集成,带来无与伦比 ...

  2. (视频) 《快速创建网站》 2.3 WordPress初始化和功能简介

    本文是<快速创建网站>系列的第4篇,如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文. 访问本系列目录,请点击:http://devopshub.cn/tag ...

  3. SharePoint 2013 "通知我"功能简介

    功能简介 "通知我"主要是在列表或者文档库里面的项目,有添加/删除/修改等操作,发送邮件通知设置的用户的功能:可以针对列表或者文档库设置通知,也可以针对单一项目设置通知功能,是Sh ...

  4. Beginning SDL 2.0(1) SDL功能简介

    原文链接为 http://wiki.libsdl.org/Introduction. 由于近期整理音视频可视化的技术,发现好久不更新的SDL发布了2.0版本,以前也没有过于关注,这里准备尝试下.了解S ...

  5. HelloX操作系统网络功能简介及使用和开发指南

    HelloX网络功能简介及使用和开发指南 HelloX网络功能简介 作为物联网操作系统,网络功能是必备的核心功能之一.按照规划,HelloX实现了两个不同类型的TCP/IP协议栈,一个面向资源受限的嵌 ...

  6. 部分GDAL工具功能简介

    主要转自http://blog.csdn.net/liminlu0314?viewmode=contents 部分GDAL工具功能简介 gdalinfo.exe 显示GDAL支持的各种栅格文件的信息. ...

  7. 全国天气预报信息数据 API 功能简介与代码调用实战视频

    此文章对开放数据接口 API 之「全国天气预报信息数据 API」进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用,并对实战开发进行了视频演示. 1. 产品功能 接口开放了 ...

  8. Hadoop生态圈-Ambari控制台功能简介

    Hadoop生态圈-Ambari控制台功能简介 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在经历一系列安装过程之后(部署过HDP后我终于发现为什么大家喜欢用它了,部署比CDH简 ...

  9. Redis安装和主要功能简介

    Redis安装和主要功能简介   Redis(https://redis.io/), 是一个内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 安装Redis 我很少在开发机中直接装各种数 ...

  10. 鸟哥的私房菜:Bash shell(一)-Bash shell功能简介

    Bash shell系列里,由变量谈起,先讲到环境变量的功能与修改的问题, 然后会继续提到历史指令的运用.接下来,就会谈一下『数据流重导向』这个重要概念, 最后就是管线命令的利用! 一  Bash s ...

随机推荐

  1. SpringBoot集成Jwt(详细步骤+图解)

    SpringBoot集成Jwt(详细步骤+图解)Jwt简介 JSON Web Token是目前最流行的跨域认证解决方案,,适合前后端分离项目通过Restful API进行数据交互时进行身份认证 Jwt ...

  2. Event Store-其它存储

    背景 ENode是一个CQRS+Event Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删 ...

  3. 数据结构 Trick 之:子树 k 距离内问题

    能够解决的题目类型 这个 Trick 能解决的题目形如: 给定 \(n\) 个节点的有根无边权有点权树. 有 \(m\) 个询问,每个询问形如点 \(x\) 的子树内与 \(x\) 深度差不超过 \( ...

  4. A note on the calculation of some functions in finite fields: Tricks of the Trade解读

    本节对该paper进行解读,记录笔记. 经常见到的是在素域\(F_p\)上计算的,尤其是双线性对出现后,在扩域\(F_{p^m}\)上计效率就需要优化了.该论文主要总结了一些在有限域上进行某些计算(求 ...

  5. 牛客周赛 Round 77

    题目链接:牛客周赛 Round 77 A. 时间表 tag:签到 B. 数独数组 tag:签到 Description:给定n个数,每个数的范围为1-9,问能否经过排列,使其每个长度为9的连续子数组都 ...

  6. VXLAN 网络中报文转发过程

    本文分享自天翼云开发者社区<VXLAN 网络中报文转发过程>,作者:刘****林 以同网段的 VM 间互通简单介绍 VXLAN 网络中的报文转发过程. 1.VM1 发送目的地址为 VM2 ...

  7. Centos7部署DVWA靶场

    Centos7部署DVWA靶场 ​ DVWA 款开源的渗透测试漏洞练习平台,其中内含xs SQL注入. 文件上传.文件包含. CSRF和暴力破解等各个难度的测试环境. 安装httpd及其相关的组件 y ...

  8. 春节福利来啦!Mac用户快来抽大奖

    亲爱的Mac俱乐部(MaClub)用户及所有果粉朋友们: 值此新春佳节之际,Mac俱乐部特别推出春节抽奖活动,以回馈广大用户长期以来的支持与厚爱.我们精心准备了丰富的奖品,希望能为您的新年增添一份惊喜 ...

  9. MacOS配置Homebrew

    Homebrew笔记 1. 介绍 官网:https://brew.sh/ 对于习惯了使用命令来完成一切的程序员来说,安装软件这种小事,自然是能够用命令解决,就不用图形界面选择.但是在 Linux 中, ...

  10. WPF 事件实现MVVM中的Command绑定

    1. 在ViewModel中弹出消息提示框,需要添加下面的代码块: <dxmvvm:Interaction.Behaviors> <dx:DXMessageBoxService /& ...