找回密码
 立即注册
首页 业界区 安全 ShadowSql之极简模式查询示例

ShadowSql之极简模式查询示例

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册