sql表查询
从表中按sql查询数据
本组件是对ShadowSql.Core同名组件的泛型扩展
支持对数据表类型特殊处理,增强功能、增加易用性
1. 接口
2. 类
TableSqlQuery<TTable>
3. 从表创建查询
3.1 ToSqlQuery扩展方法
从表创建TableSqlQuery<TTable>的AND查询
TableSqlQuery<TTable> ToSqlQuery<TTable>(this TTable table)
where TTable : ITable;
var users = new UserTable();
var query = users.ToSqlQuery()
.Where(users.Id.LessValue(100));
// SELECT * FROM [Users] WHERE Id<100
3.2 ToSqlOrQuery扩展方法
从表创建TableSqlQuery<TTable>的OR查询
TableSqlQuery<TTable> ToSqlOrQuery<TTable>(this TTable table)
where TTable : ITable;
var query = _db.From("Users")
.ToSqlOrQuery()
.Where("Id=@Id", "Status=@Status");
// SELECT * FROM [Users] WHERE Id=@Id OR Status=@Status
4. Where方法
TableSqlQuery<TTable> Where(Func<TTable, AtomicLogic> query);
var query = new UserTable()
.ToSqlQuery()
.Where(user => user.Id.Less("LastId"));
// SELECT * FROM [Users] WHERE [Id]<@LastId
5. Apply方法
操作Logic的高阶函数
也可称开窗函数,把内部的表和Logic开放给用户直接使用
以便于使用更直接、通用的逻辑来关联查询
查询子函数标记static性能更好
TableSqlQuery<TTable> Apply(Func<SqlQuery, TTable, SqlQuery> query);
var query = new UserTable()
.ToSqlQuery()
.Apply(static (q, u) => q
.And(u.Id.Less("LastId"))
.And(u.Status.EqualValue(true))
);
// SELECT * FROM [Users] WHERE [Id]<@LastId AND [Status]=1
6. 其他相关功能