Table of Contents

获取表

  • 从表获取数据组件
  • 本组件用来处理sql的SELECT语句
  • 本组件是对ShadowSql.Core同名组件的泛型扩展
  • 支持对数据表类型特殊处理,增强功能、增加易用性

1. 接口

ISelect

2. 基类

3. 类

TableSelect<TTable>

class TableSelect<TTable>
    where TTable : ITable;

4. ToSelect

创建TableSelect<TTable>

4.1 从表获取

TableSelect<TTable> ToSelect<TTable>(this TTable table)
        where TTable : ITable;
var select = _db.From("Users")
    .ToSelect()
    .Select("Id", "Name");
// SELECT [Id],[Name] FROM [Users]

4.2 从表和查询条件获取

TableSelect<TTable> ToSelect<TTable>(this TTable table, ISqlLogic filter)
        where TTable : ITable;
TableSelect<TTable> ToSelect<TTable>(this TTable table, Func<TTable, ISqlLogic> filter)
        where TTable : ITable;
UserTable table = new();
var select = table.ToSelect(table.Status.EqualValue(true))
    .Select(table.Id, table.Name);
// SELECT [Id],[Name] FROM [Users] WHERE [Status]=1
var select = new UserTable()
    .ToSelect(table => table.Status.EqualValue(true));
// SELECT * FROM [Users] WHERE [Status]=1

4.3 从sql表查询获取

TableSelect<TTable> ToSelect<TTable>(this TableSqlQuery<TTable> query)
        where TTable : ITable;
var select = _db.From("Users")
    .ToSqlQuery()
    .Where("Status=1")
    .ToSelect();
// SELECT * FROM [Users] WHERE Status=1

4.4 从逻辑表查询获取

TableSelect<TTable> ToSelect<TTable>(this TableQuery<TTable> query)
        where TTable : ITable;
var select = new UserTable()
    .ToQuery()
    .And(table => table.Status.EqualValue(true))
    .ToSelect();
// SELECT * FROM [Users] WHERE Status=1

5. Select方法

  • 该方法利用泛型优势,更方便使用表字段来筛选
TableSelect<TTable> Select(Func<TTable, IFieldView> select);
TableSelect<TTable> Select(Func<TTable, IEnumerable<IFieldView>> select);
var select = new UserTable()
    .ToSelect(table => table.Status.EqualValue(true))
    .Select(table => [table.Id, table.Name]);
// SELECT [Id],[Name] FROM [Users] WHERE [Status]=1

6. 其他相关功能