Table of Contents

ShadowSql

  • .net拼接sql工具
  • 支持多种数据库,包括MsSql,MySql,Oracle,Sqlite,Postgres等,可扩展其他数据库方言的支持
  • 整个sql拼写只使用1个StringBuilder,减少字符串碎片生成
  • 在ShadowSql.Core项目基础上,进行泛型扩展和增强
  • Nuget包名: ShadowSql
  • 易用版

注:本项目文档未特殊说明的示例sql,默认使用MsSql,并非只支持MsSql

1. 以下是各功能的序列总图

  • 示意组件和功能之间的调用关系
  • 除了Cursor,其他都是标准sql的概念,明显易懂
  • Cursor是ORDER BY和分页参数的封装
sequenceDiagram
	participant Table
	participant TableAlias
	participant TableQuery
	participant JoinQuery
	participant GroupByQuery
	participant Cursor
	participant Select
	participant Insert
	participant Update
	participant Delete

	Table->>TableAlias: As()
	Table->>TableQuery: ToQuery()

	par Join
		Table->>JoinQuery: Join()
		TableAlias->>JoinQuery: Join()
	end	
	par GroupBy
		Table->>GroupByQuery: GroupBy()
		TableQuery->>GroupByQuery: GroupBy()
		JoinQuery->>GroupByQuery: GroupBy()
	end
	par ToCursor
		Table->>Cursor: ToCursor()
		TableQuery->>Cursor: ToCursor()
		JoinQuery->>Cursor: ToCursor()
		JoinQuery->>Cursor: ToCursor()
		GroupByQuery->>Cursor: ToCursor()
	end
	par ToSelect
		Table->>Select: ToSelect()
		TableQuery->>Select: ToSelect()
		JoinQuery->>Select: ToSelect()
		GroupByQuery->>Select: ToSelect()
		Cursor->>Select: ToSelect()
	end
	par ToInsert
		Table->>Insert: ToInsert()
		Select->>Insert: InsertTo()
	end
	par ToUpdate
		Table->>Update: ToUpdate()
		TableQuery->>Update: ToUpdate()
		JoinQuery->>Update: ToUpdate()
	end
	par ToDelete
		Table->>Delete: ToDelete()
		TableQuery->>Delete: ToDelete()
		JoinQuery->>Delete: ToDelete()
	end

1.1 组件说明

1.1.1 Table

1.1.2 TableAlias

1.1.3 TableQuery

1.1.4 JoinQuery

1.1.5 GroupByQuery

1.1.6 Cursor

1.2 功能说明

1.2.1 Select

1.2.2 Insert

1.2.3 Update

1.2.4 Delete

1.3 方法说明

1.3.1 As

  • 转化为别名对象

1.3.2 ToQuery

  • 转化为查询对象
  • 含ToSqlQuery、ToQuery、ToSqlOrQuery或ToOrQuery等

1.3.3 Join

  • 多、联表查询
  • 含SqlJoin、Join、SqlMulti或SqlMulti等

1.3.4 GroupBy

  • 分组查询
  • 含SqlGroupBy或GroupBy等

1.3.5 ToCursor

  • 转化为游标对象

1.3.6 ToSelect

  • 转化为筛选获取对象

1.3.7 ToInsert

  • 转化为插入对象
  • 含ToInsert、ToMultiInsert或InsertTo等

1.3.8 ToUpdate

  • 转化为更新对象

1.3.9 ToDelete

  • 转化为删除对象

2. 单表功能图

  • 示意单表的功能调用关系
sequenceDiagram
	participant Table
	participant TableQuery
	participant GroupByQuery
	participant Cursor
	participant Select
	participant Insert
	participant Update
	participant Delete

	Table->>TableQuery: ToQuery()
	par GroupBy
		Table->>GroupByQuery: GroupBy()
		TableQuery->>GroupByQuery: GroupBy()
	end	
	par ToCursor
		Table->>Cursor: ToCursor()
		TableQuery->>Cursor: ToCursor()
		GroupByQuery->>Cursor: ToCursor()
	end
	par ToSelect
		Table->>Select: ToSelect()
		TableQuery->>Select: ToSelect()
		GroupByQuery->>Select: ToSelect()
		Cursor->>Select: ToSelect()
	end
	par ToInsert
		Table->>Insert: ToInsert()
		Select->>Insert: InsertTo()
	end
	par ToUpdate
		Table->>Update: ToUpdate()
		TableQuery->>Update: ToUpdate()
	end
	par ToDelete
		Table->>Delete: ToDelete()
		TableQuery->>Delete: ToDelete()
	end