/*********************************************************************** * Project: CoreCms * ProjectName: 核心内容管理系统 * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com * CreateTime: 2021/1/31 21:45:10 * Description: 暂无 ***********************************************************************/ using System; using System.Collections.Generic; using System.Data; using System.Linq.Expressions; using System.Threading.Tasks; using CoreCms.Net.Model.ViewModels.Basics; using SqlSugar; namespace CoreCms.Net.IServices { /// /// 服务仓储通用接口类 /// /// public interface IBaseServices where T : class { /// /// 根据主值查询单条数据 /// /// 主键值 /// 是否使用WITH(NOLOCK) /// 泛型实体 T QueryById(object pkValue, bool blUseNoLock = false); /// /// 根据主值查询单条数据 /// /// /// 是否使用WITH(NOLOCK) /// Task QueryByIdAsync(object objId, bool blUseNoLock = false); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NOLOCK) /// List QueryByIDs(object[] lstIds, bool blUseNoLock = false); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NOLOCK) /// Task> QueryByIDsAsync(object[] lstIds, bool blUseNoLock = false); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NOLOCK) /// List QueryByIDs(int[] lstIds, bool blUseNoLock = false); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NOLOCK) /// Task> QueryByIDsAsync(int[] lstIds, bool blUseNoLock = false); /// /// 查询所有数据(无分页,请慎用) /// /// 是否使用WITH(NOLOCK) /// List Query(bool blUseNoLock = false); /// /// 查询所有数据(无分页,请慎用) /// /// 是否使用WITH(NOLOCK) /// Task> QueryAsync(bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件 /// 排序 /// 是否使用WITH(NOLOCK) /// 泛型实体集合 List QueryListByClause(string strWhere, string orderBy = "", bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件 /// 排序 /// 是否使用WITH(NOLOCK) /// 泛型实体集合 Task> QueryListByClauseAsync(string strWhere, string orderBy = "", bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序 /// 是否使用WITH(NOLOCK) /// 泛型实体集合 List QueryListByClause(Expression> predicate, string orderBy = "", bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序 /// 是否使用WITH(NOLOCK) /// 泛型实体集合 Task> QueryListByClauseAsync(Expression> predicate, string orderBy = "", bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NOLOCK) /// 泛型实体集合 List QueryListByClause(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NOLOCK) /// 泛型实体集合 Task> QueryListByClauseAsync(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); /// /// 根据条件查询一定数量数据 /// /// 条件表达式树 /// 获取数量 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NOLOCK) /// List QueryListByClause(Expression> predicate, int take, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); /// /// 根据条件查询一定数量数据 /// /// 条件表达式树 /// 获取数量 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NOLOCK) /// Task> QueryListByClauseAsync(Expression> predicate, int take, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); /// /// 根据条件查询一定数量数据 /// /// 条件表达式树 /// 获取数量 /// 排序字段,如name asc,age desc /// 是否使用WITH(NOLOCK) /// List QueryListByClause(Expression> predicate, int take, string strOrderByFileds = "", bool blUseNoLock = false); /// /// 根据条件查询一定数量数据 /// /// 条件表达式树 /// 获取数量 /// 排序字段,如name asc,age desc /// 是否使用WITH(NOLOCK) /// Task> QueryListByClauseAsync(Expression> predicate, int take, string strOrderByFileds = "", bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 是否使用WITH(NOLOCK) /// T QueryByClause(Expression> predicate, bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 是否使用WITH(NOLOCK) /// Task QueryByClauseAsync(Expression> predicate, bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NOLOCK) /// T QueryByClause(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NOLOCK) /// Task QueryByClauseAsync(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); /// /// 根据条件查询数据(悲观锁等待模式) /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用TranLock /// Task QueryByClauseWithTranLockAsync(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseTranLock = false); /// /// 写入实体数据 /// /// 实体类 /// int Insert(T entity); /// /// 写入实体数据 /// /// 实体类 /// Task InsertAsync(T entity); /// /// 写入实体数据 /// /// 实体类 /// int Insert(T entity, Expression> insertColumns = null); /// /// 写入实体数据 /// /// 实体类 /// Task InsertAsync(T entity, Expression> insertColumns = null); /// /// 写入实体数据 /// /// 实体类 /// bool InsertGuid(T entity, Expression> insertColumns = null); /// /// 写入实体数据 /// /// 实体类 /// Task InsertGuidAsync(T entity, Expression> insertColumns = null); /// /// 批量写入实体数据 /// /// 实体类 /// int Insert(List entity); /// /// 批量写入实体数据 /// /// 实体类 /// Task InsertAsync(List entity); /// /// 批量写入实体数据 /// /// 实体类 /// Task InsertCommandAsync(List entity); /// /// 批量更新实体数据 /// /// /// bool Update(List entity); /// /// 批量更新实体数据 /// /// /// Task UpdateAsync(List entity); /// /// 更新实体数据 /// /// /// bool Update(T entity); /// /// 更新实体数据 /// /// /// Task UpdateAsync(T entity); /// /// 根据手写条件更新 /// /// /// /// bool Update(T entity, string strWhere); /// /// 根据手写条件更新 /// /// /// /// Task UpdateAsync(T entity, string strWhere); /// /// 根据手写sql语句更新数据 /// /// /// /// bool Update(string strSql, SugarParameter[] parameters = null); /// /// 根据手写sql语句更新数据 /// /// /// /// Task UpdateAsync(string strSql, SugarParameter[] parameters = null); /// /// 更新某个字段 /// /// lamdba表达式,如it => new Student() { Name = "a", CreateTime = DateTime.Now } /// lamdba判断 /// bool Update(Expression> columns, Expression> where); /// /// 更新某个字段 /// /// lamdba表达式,如it => new Student() { Name = "a", CreateTime = DateTime.Now } /// lamdba判断 /// Task UpdateAsync(Expression> columns, Expression> where); /// /// 根据条件更新 /// /// /// /// /// /// Task UpdateAsync(T entity, List lstColumns = null, List lstIgnoreColumns = null, string strWhere = ""); /// /// 根据条件更新 /// /// /// /// /// /// bool Update(T entity, List lstColumns = null, List lstIgnoreColumns = null, string strWhere = ""); /// /// 删除数据 /// /// 实体类 /// bool Delete(T entity); /// /// 删除数据 /// /// 实体类 /// Task DeleteAsync(T entity); /// /// 删除数据 /// /// 实体类集合 /// bool Delete(IEnumerable entity); /// /// 删除数据 /// /// 实体类集合 /// Task DeleteAsync(IEnumerable entity); /// /// 删除数据 /// /// 过滤条件 /// bool Delete(Expression> where); /// /// 删除数据 /// /// 过滤条件 /// Task DeleteAsync(Expression> where); /// /// 删除指定ID的数据 /// /// /// bool DeleteById(object id); /// /// 删除指定ID的数据 /// /// /// Task DeleteByIdAsync(object id); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(int[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(int[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(long[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(long[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(Guid[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(Guid[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(string[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(string[] ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// bool DeleteByIds(List ids); /// /// 删除指定ID集合的数据(批量删除) /// /// /// Task DeleteByIdsAsync(List ids); /// /// 判断数据是否存在 /// /// 条件表达式树 /// 是否使用WITH(NOLOCK) /// bool Exists(Expression> predicate, bool blUseNoLock = false); /// /// 判断数据是否存在 /// /// 条件表达式树 /// 是否使用WITH(NOLOCK) /// Task ExistsAsync(Expression> predicate, bool blUseNoLock = false); /// /// 获取数据总数 /// /// 条件表达式树 /// 是否使用WITH(NOLOCK) /// int GetCount(Expression> predicate, bool blUseNoLock = false); /// /// 获取数据总数 /// /// 条件表达式树 /// 是否使用WITH(NOLOCK) /// Task GetCountAsync(Expression> predicate, bool blUseNoLock = false); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NOLOCK) /// int GetSum(Expression> predicate, Expression> field, bool blUseNoLock = false); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NOLOCK) /// Task GetSumAsync(Expression> predicate, Expression> field, bool blUseNoLock = false); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NOLOCK) /// decimal GetSum(Expression> predicate, Expression> field, bool blUseNoLock = false); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NOLOCK) /// Task GetSumAsync(Expression> predicate, Expression> field, bool blUseNoLock = false); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NOLOCK) /// float GetSum(Expression> predicate, Expression> field, bool blUseNoLock = false); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NOLOCK) /// Task GetSumAsync(Expression> predicate, Expression> field, bool blUseNoLock = false); /// /// 根据条件查询分页数据 /// /// /// /// 当前页面索引 /// 分布大小 /// 是否使用WITH(NOLOCK) /// IPageList QueryPage(Expression> predicate, string orderBy = "", int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false); /// /// 根据条件查询分页数据 /// /// /// /// 当前页面索引 /// 分布大小 /// 是否使用WITH(NOLOCK) /// Task> QueryPageAsync(Expression> predicate, string orderBy = "", int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false); /// /// 根据条件查询分页数据 /// /// 判断集合 /// 排序方式 /// 当前页面索引 /// 分布大小 /// /// 是否使用WITH(NOLOCK) /// IPageList QueryPage(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false); /// /// 根据条件查询分页数据 /// /// 判断集合 /// 排序方式 /// 当前页面索引 /// 分布大小 /// /// 是否使用WITH(NOLOCK) /// Task> QueryPageAsync(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false); /// /// 查询-多表查询 /// /// 实体1 /// 实体2 /// 返回对象 /// 关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo} /// 返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo} /// 查询表达式 (w1, w2) =>w1.UserNo == "") /// 是否使用WITH(NOLOCK) /// List QueryMuch( Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null, bool blUseNoLock = false) where T1 : class, new(); /// /// 查询-多表查询 /// /// 实体1 /// 实体2 /// 返回对象 /// 关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo} /// 返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo} /// 查询表达式 (w1, w2) =>w1.UserNo == "") /// 是否使用WITH(NOLOCK) /// Task> QueryMuchAsync( Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null, bool blUseNoLock = false) where T1 : class, new(); /// /// 查询-多表查询 /// /// 实体1 /// 实体2 /// 返回对象 /// 关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo} /// 返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo} /// 查询表达式 (w1, w2) =>w1.UserNo == "") /// 是否使用WITH(NOLOCK) /// TResult QueryMuchFirst( Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null, bool blUseNoLock = false) where T1 : class, new(); /// /// 查询-多表查询 /// /// 实体1 /// 实体2 /// 返回对象 /// 关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo} /// 返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo} /// 查询表达式 (w1, w2) =>w1.UserNo == "") /// 是否使用WITH(NOLOCK) /// Task QueryMuchFirstAsync( Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null, bool blUseNoLock = false) where T1 : class, new(); /// /// 查询-三表查询 /// /// 实体1 /// 实体2 /// 实体3 /// 返回对象 /// 关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo} /// 返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo} /// 查询表达式 (w1, w2) =>w1.UserNo == "") /// 是否使用WITH(NOLOCK) /// List QueryMuch( Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null, bool blUseNoLock = false) where T1 : class, new(); /// /// 查询-三表查询 /// /// 实体1 /// 实体2 /// 实体3 /// 返回对象 /// 关联表达式 (join1,join2) => new object[] {JoinType.Left,join1.UserNo==join2.UserNo} /// 返回表达式 (s1, s2) => new { Id =s1.UserNo, Id1 = s2.UserNo} /// 查询表达式 (w1, w2) =>w1.UserNo == "") /// 是否使用WITH(NOLOCK) /// Task> QueryMuchAsync( Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null, bool blUseNoLock = false) where T1 : class, new(); /// /// 执行sql语句并返回List /// /// /// /// /// List SqlQuery(string sql, List parameters); /// /// 执行sql语句并返回List /// /// /// /// Task> SqlQueryable(string sql); /// /// 执行调用存储过程(返回DataTable) /// /// 存储过程名称 /// 参数 /// Task SqlQueryDataTableByStoredProcedure(string useStoredProcedureName, List parameters); /// /// 执行调用存储过程(返回List) /// /// 返回类型 /// 存储过程名称 /// 参数 /// Task> SqlQueryableByStoredProcedure(string useStoredProcedureName, List parameters); } }