using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Threading.Tasks; namespace Kean.Infrastructure.Database { /// /// 表示对数据库对象的操作 /// /// 数据库对象映射的实体类型 public interface ISchema where T : IEntity { /// /// 生成 Sql 查询 /// /// 投影表达式 /// Sql 查询 Query Query(Expression> expression); /// /// 插入新记录 /// /// 实体对象 Task Add(T entity); /// /// 更新记录 /// /// 实体对象 /// 忽略字段 Task Update(T entity, params string[] ignore); /// /// 更新记录 /// /// 值 Task Update(Parameters parameters); /// /// 更新记录 /// /// 值 Task Update(dynamic parameters); /// /// 删除记录 /// Task Delete(); /// /// 删除记录 /// /// 实体对象 Task Delete(T entity); /// /// 查询单一结果 /// Task Single(); /// /// 查询单一结果 /// /// 投影表达式 Task Single(Expression> expression); /// /// 查询结果集合 /// Task> Select(); /// /// 查询结果集合 /// /// 投影表达式 Task> Select(Expression> expression); /// /// 设置查询条件 /// /// 查询表达式 ISchema Where(Expression> expression); /// /// 设置查询条件 /// /// Sql 命令 ISchema Where(string expression); /// /// 设置查询条件 /// /// Sql 命令 /// 参数 ISchema Where(string expression, dynamic parameters); /// /// 设置查询条件 /// /// Sql 命令 /// 参数 ISchema Where(string expression, Parameters parameters); /// /// 设置排序条件 /// /// 排序表达式 /// 排序类型 ISchema OrderBy(Expression> expression, Order order); /// /// 设置排序条件 /// /// Sql 命令 ISchema OrderBy(string expression); /// /// 设置分组条件 /// /// 分组表达式 ISchema GroupBy(Expression> expression); /// /// 设置分组条件 /// /// Sql 命令 ISchema GroupBy(string expression); /// /// 设置分组过滤条件 /// /// 分组条件表达式 ISchema Having(Expression> expression); /// /// 设置分组过滤条件 /// /// Sql 命令 ISchema Having(string expression); /// /// 设置锁 /// /// 锁类型 ISchema Lock(Lock type); /// /// 设置查询跳过记录数 /// /// 记录数 ISchema Skip(int count); /// /// 设置查询目标记录数 /// /// 记录数 ISchema Take(int count); /// /// 设置去重 /// ISchema Distinct(); } /// /// 表示对数据库对象的操作 /// /// 数据库对象映射的实体类型1 /// 数据库对象映射的实体类型2 public interface ISchema where T1 : IEntity where T2 : IEntity { /// /// 生成 Sql 查询 /// /// 投影表达式 /// Sql 查询 Query Query(Expression> expression); /// /// 查询单一结果 /// /// 投影表达式 Task Single(Expression> expression); /// /// 查询结果集合 /// /// 投影表达式 Task> Select(Expression> expression); /// /// 设置连接 /// /// 连接方式 /// 条件表达式 ISchema Join(Join join, Expression> expression); /// /// 设置连接 /// /// 连接方式 /// Sql 命令 ISchema Join(Join join, string expression); /// /// 设置连接 /// /// 连接方式 /// Sql 命令 /// 参数 ISchema Join(Join join, string expression, dynamic parameters); /// /// 设置连接 /// /// 连接方式 /// Sql 命令 /// 参数 ISchema Join(Join join, string expression, Parameters parameters); /// /// 设置查询条件 /// /// 查询表达式 ISchema Where(Expression> expression); /// /// 设置查询条件 /// /// Sql 命令 ISchema Where(string expression); /// /// 设置查询条件 /// /// Sql 命令 /// 参数 ISchema Where(string expression, dynamic parameters); /// /// 设置查询条件 /// /// Sql 命令 /// 参数 ISchema Where(string expression, Parameters parameters); /// /// 设置排序条件 /// /// 排序表达式 /// 排序类型 ISchema OrderBy(Expression> expression, Order order); /// /// 设置排序条件 /// /// Sql 命令 ISchema OrderBy(string expression); /// /// 设置分组条件 /// /// 分组表达式 ISchema GroupBy(Expression> expression); /// /// 设置分组条件 /// /// Sql 命令 ISchema GroupBy(string expression); /// /// 设置分组过滤条件 /// /// 分组条件表达式 ISchema Having(Expression> expression); /// /// 设置分组过滤条件 /// /// Sql 命令 ISchema Having(string expression); /// /// 设置查询跳过记录数 /// /// 记录数 ISchema Skip(int count); /// /// 设置查询目标记录数 /// /// 记录数 ISchema Take(int count); /// /// 设置去重 /// ISchema Distinct(); } /// /// 表示对数据库对象的操作 /// /// 数据库对象映射的实体类型1 /// 数据库对象映射的实体类型2 /// 数据库对象映射的实体类型3 /// public interface ISchema where T1 : IEntity where T2 : IEntity where T3 : IEntity { /// /// 生成 Sql 查询 /// /// 投影表达式 /// Sql 查询 Query Query(Expression> expression); /// /// 查询单一结果 /// /// 投影表达式 Task Single(Expression> expression); /// /// 查询结果集合 /// /// 投影表达式 Task> Select(Expression> expression); /// /// 设置连接 /// /// 连接方式 /// 条件表达式 ISchema Join(Join join, Expression> expression) where U1 : IEntity where U2 : IEntity; /// /// 设置连接 /// /// 连接方式 /// Sql 命令 ISchema Join(Join join, string expression) where U1 : IEntity where U2 : IEntity; /// /// 设置连接 /// /// 连接方式 /// Sql 命令 /// 参数 ISchema Join(Join join, string expression, dynamic parameters) where U1 : IEntity where U2 : IEntity; /// /// 设置连接 /// /// 连接方式 /// Sql 命令 /// 参数 ISchema Join(Join join, string expression, Parameters parameters) where U1 : IEntity where U2 : IEntity; /// /// 设置查询条件 /// /// 查询表达式 ISchema Where(Expression> expression); /// /// 设置查询条件 /// /// Sql 命令 ISchema Where(string expression); /// /// 设置查询条件 /// /// Sql 命令 /// 参数 ISchema Where(string expression, dynamic parameters); /// /// 设置查询条件 /// /// Sql 命令 /// 参数 ISchema Where(string expression, Parameters parameters); /// /// 设置排序条件 /// /// 排序表达式 /// 排序类型 ISchema OrderBy(Expression> expression, Order order); /// /// 设置排序条件 /// /// Sql 命令 ISchema OrderBy(string expression); /// /// 设置分组条件 /// /// 分组表达式 ISchema GroupBy(Expression> expression); /// /// 设置分组条件 /// /// Sql 命令 ISchema GroupBy(string expression); /// /// 设置分组过滤条件 /// /// 分组条件表达式 ISchema Having(Expression> expression); /// /// 设置分组过滤条件 /// /// Sql 命令 ISchema Having(string expression); /// /// 设置查询跳过记录数 /// /// 记录数 ISchema Skip(int count); /// /// 设置查询目标记录数 /// /// 记录数 ISchema Take(int count); /// /// 设置去重 /// ISchema Distinct(); } }