滑清怡 发表于 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查询,这也一种不错的选项
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: ShadowSql之极简模式查询示例