滑清怡 发表于 2025-6-1 18:51:27

ShadowSql之极简模式查询示例

ShadowSql拼接sql可以很简单,非必须的事情都可以不做,非必须的对象也都不构造。
可以不用提前配置,开箱即用。
这里我们示例一下极简模式。
 
一、极简单表查询
1. SqlQuery极简查询
      var users = SimpleDB.From("Users");
      var query = users.ToSqlQuery()
            .Where(users.Field("Id").LessValue(100));我们还可以用这样查询
      var query = SimpleDB.From("Users")
            .ToSqlQuery()
            .Where(users => users.Field("Id").LessValue(100));
sql: SELECT * FROM   WHERE users.Field("Id").LessValue(100));
sql: SELECT * FROM   WHERE t1.Field("DepartmentId").Equal(t2.Field("Id")))            .WhereLeft(t1 => t1.Field("Age").GreaterValue(30))            .WhereRight(t2 => t2.Field("Manager").EqualValue("CEO"));      var users = SimpleDB.From("Users");
      var query = users.ToQuery()
            .And(users.Field("Id").LessValue(100)); 
sql: SELECT * FROM  AS e INNER JOIN AS d ON e.=d. WHERE e.>30 AND d.='CEO'
      var query = SimpleDB.From("Users")
            .ToQuery()
            .And(users => users.Field("Id").LessValue(100));sql: SELECT * FROM  AS e INNER JOIN AS d ON e.=d. WHERE e.>30 AND d.='CEO'
可以设置别名
      var joinOn = SimpleDB.From("Employees").SqlJoin(SimpleDB.From("Departments"))
            .On(static (t1, t2) => t1.Field("DepartmentId").Equal(t2.Field("Id")))
            .WhereLeft(t1 => t1.Field("Age").GreaterValue(30))
            .WhereRight(t2 => t2.Field("Manager").EqualValue("CEO")); 
2、Query极简联表 
      var joinOn = SimpleDB.From("Employees").SqlJoin(SimpleDB.From("Departments"));
      var (t1, t2) = (joinOn.Left, joinOn.Source);
      joinOn.On(t1.Field("DepartmentId").Equal(t2.Field("Id")));
      var joinTable = joinOn.Root
            .Where(t1.Field("Age").GreaterValue(30))
            .Where(t2.Field("Manager").EqualValue("CEO"));sql: SELECT * FROM  AS t1 INNER JOIN AS t2 ON t1.=t2. WHERE t1.>30 AND t2.='CEO'
Query也可以设置别名
      var e = SimpleDB.From("Employees").As("e");
      var d = SimpleDB.From("Departments").As("d");
      var joinOn = e.SqlJoin(d)
            .On(e.Field("DepartmentId").Equal(d.Field("Id")));
      var joinTable = joinOn.Root
            .Where(e.Field("Age").GreaterValue(30))
            .Where(d.Field("Manager").EqualValue("CEO")); sql: SELECT * FROM  AS e INNER JOIN AS d ON e.=d. WHERE e.>30 AND d.='CEO'
通过Field查询,既不需要自定义表类型,也不需要给表定义列,就可以畅通无阻的进行sql查询,这也一种不错的选项
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

虾氲叱 发表于 2025-11-1 09:06:16

谢谢楼主提供!

劳暄美 发表于 2025-11-29 23:31:51

鼓励转贴优秀软件安全工具和文档!

懵径 发表于 2025-12-16 22:47:59

新版吗?好像是停更了吧。

移国拱 发表于 2026-1-14 10:50:06

收藏一下   不知道什么时候能用到

焦和玉 发表于 2026-1-18 01:01:58

懂技术并乐意极积无私分享的人越来越少。珍惜

苗嘉惠 发表于 2026-1-21 09:18:37

谢谢楼主提供!

眩疝诺 发表于 2026-1-23 04:19:57

懂技术并乐意极积无私分享的人越来越少。珍惜

羊舌正清 发表于 2026-1-29 03:04:28

新版吗?好像是停更了吧。

仰翡邸 发表于 2026-1-30 07:43:40

用心讨论,共获提升!

滑清怡 发表于 2026-1-31 07:11:09

谢谢楼主提供!

痕伯 发表于 2026-2-4 10:14:08

谢谢分享,试用一下

巨耗 发表于 2026-2-4 10:39:15

感谢分享,学习下。

呈步 发表于 2026-2-5 09:09:05

新版吗?好像是停更了吧。

锑砖 发表于 2026-2-7 18:27:47

东西不错很实用谢谢分享

科元料 发表于 2026-2-8 03:34:09

东西不错很实用谢谢分享

梁丘艷蕙 发表于 2026-2-8 12:45:11

感谢发布原创作品,程序园因你更精彩

舒娅友 发表于 2026-2-9 19:36:53

很好很强大我过来先占个楼 待编辑

狙兕 发表于 2026-2-10 03:54:52

不错,里面软件多更新就更好了

挫莉虻 发表于 2026-2-10 12:35:24

收藏一下   不知道什么时候能用到
页: [1] 2
查看完整版本: ShadowSql之极简模式查询示例