/*********************************************************************** * Project: baifenBinfa * ProjectName: 百分兵法管理系统 * Web: http://chuanyin.com * Author: * Email: * CreateTime: 202403/02 * 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.IRepository { /// /// 仓储通用接口类 /// /// 泛型实体类 public interface IBaseRepository where T : class { #region 查询数据 /// /// 根据主值查询单条数据 /// /// 主键值 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// 泛型实体 T QueryById(object pkValue, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据主值查询单条数据 /// /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// Task QueryByIdAsync(object objId, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// List QueryByIDs(object[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// Task> QueryByIDsAsync(object[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// List QueryByIDs(int[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据主值列表查询单条数据 /// /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// Task> QueryByIDsAsync(int[] lstIds, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 查询所有数据(无分页,请慎用) /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// List Query(bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 查询所有数据(无分页,请慎用) /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// Task> QueryAsync(bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// 泛型实体集合 List QueryListByClause(Expression> predicate, Expression> orderByPredicate = null, OrderByType orderByType = OrderByType.Asc, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// 泛型实体集合 Task> QueryListByClauseAsync(Expression> predicate, Expression> orderByPredicate = null, OrderByType orderByType=OrderByType.Asc, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询一定数量数据 /// /// 条件表达式树 /// 获取数量 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// List QueryListByClause(Expression> predicate, int take, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询一定数量数据 /// /// 条件表达式树 /// 获取数量 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// Task> QueryListByClauseAsync(Expression> predicate, int take, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// T QueryByClause(Expression> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// 是否使用锁 /// 数据锁类型 /// Task QueryByClauseAsync(Expression> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue, bool blUseTranLock = false, DbLockType dbLockType = DbLockType.Wait); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// T QueryByClause(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询数据 /// /// 条件表达式树 /// 排序字段 /// 排序顺序 /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// 是否使用锁 /// 数据锁类型 /// Task QueryByClauseAsync(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue, bool blUseTranLock = false, DbLockType dbLockType = DbLockType.Wait); #endregion #region 新闻数据 /// /// 写入实体数据 /// /// 实体类 /// 是否清除缓存 /// int Insert(T entity, bool isRemoveDataCache = false); /// /// 写入实体数据 /// /// 实体类 /// 是否清除缓存 /// Task InsertAsync(T entity, bool isRemoveDataCache = false); /// /// 写入实体数据 /// /// 实体类 /// /// 是否清除缓存 /// int Insert(T entity, Expression> insertColumns, bool isRemoveDataCache = false); /// /// 写入实体数据 /// /// 实体类 /// /// 是否清除缓存 /// Task InsertAsync(T entity, Expression> insertColumns, bool isRemoveDataCache = false); /// /// 写入实体数据 /// /// 实体类 /// /// 是否清除缓存 /// bool InsertGuid(T entity, Expression> insertColumns, bool isRemoveDataCache = false); /// /// 写入实体数据 /// /// 实体类 /// /// 是否清除缓存 /// Task InsertGuidAsync(T entity, Expression> insertColumns, bool isRemoveDataCache = false); /// /// 批量写入实体数据 /// /// 实体类 /// 是否清除缓存 /// int Insert(List entity, bool isRemoveDataCache = false); /// /// 批量写入实体数据 /// /// 实体类 /// 是否清除缓存 /// Task InsertAsync(List entity, bool isRemoveDataCache = false); /// /// 批量写入实体数据 /// /// 实体类 /// 是否清除缓存 /// Task InsertCommandAsync(List entity, bool isRemoveDataCache = false); #endregion #region 更新数据 /// /// 批量更新实体数据 /// /// /// 是否清除缓存 /// bool Update(List entity, bool isRemoveDataCache = false); /// /// 批量更新实体数据 /// /// /// 是否清除缓存 /// Task UpdateAsync(List entity, bool isRemoveDataCache = false); /// /// 更新实体数据 /// /// /// 是否清除缓存 /// bool Update(T entity, bool isRemoveDataCache = false); /// /// 更新实体数据 /// /// /// 是否清除缓存 /// Task UpdateAsync(T entity, bool isRemoveDataCache = false); /// /// 更新某个字段 /// /// lambda表达式,如it => new Student() { Name = "a", CreateTime = DateTime.Now } /// lambda判断 /// 是否清除缓存 /// bool Update(Expression> columns, Expression> where, bool isRemoveDataCache = false); /// /// 更新某个字段 /// /// lambda表达式,如it => new Student() { Name = "a", CreateTime = DateTime.Now } /// lambda判断 /// 是否清除缓存 /// Task UpdateAsync(Expression> columns, Expression> where, bool isRemoveDataCache = false); #endregion #region 删除数据 /// /// 删除数据 /// /// 实体类 /// 是否清除缓存 /// bool Delete(T entity, bool isRemoveDataCache = false); /// /// 删除数据 /// /// 实体类 /// 是否清除缓存 /// Task DeleteAsync(T entity, bool isRemoveDataCache = false); /// /// 删除数据 /// /// 实体类集合 /// 是否清除缓存 /// bool Delete(IEnumerable entity, bool isRemoveDataCache = false); /// /// 删除数据 /// /// 实体类集合 /// 是否清除缓存 /// Task DeleteAsync(IEnumerable entity, bool isRemoveDataCache = false); /// /// 删除数据 /// /// 过滤条件 /// 是否清除缓存 /// bool Delete(Expression> where, bool isRemoveDataCache = false); /// /// 删除数据 /// /// 过滤条件 /// 是否清除缓存 /// Task DeleteAsync(Expression> where, bool isRemoveDataCache = false); /// /// 删除指定ID的数据 /// /// /// 是否清除缓存 /// bool DeleteById(object id, bool isRemoveDataCache = false); /// /// 删除指定ID的数据 /// /// /// 是否清除缓存 /// Task DeleteByIdAsync(object id, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(int[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(int[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(long[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(long[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(Guid[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(Guid[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(string[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(string[] ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// bool DeleteByIds(List ids, bool isRemoveDataCache = false); /// /// 删除指定ID集合的数据(批量删除) /// /// /// 是否清除缓存 /// Task DeleteByIdsAsync(List ids, bool isRemoveDataCache = false); #endregion #region 判断数据 /// /// 判断数据是否存在 /// /// 条件表达式树 /// 是否使用WITH(NoLock) /// bool Exists(Expression> predicate, bool blUseNoLock = false); /// /// 判断数据是否存在 /// /// 条件表达式树 /// 是否使用WITH(NoLock) /// Task ExistsAsync(Expression> predicate, bool blUseNoLock = false); #endregion #region 统计数据 /// /// 获取数据总数 /// /// 条件表达式树 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// int GetCount(Expression> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据总数 /// /// 条件表达式树 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// Task GetCountAsync(Expression> predicate, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// int GetSum(Expression> predicate, Expression> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// Task GetSumAsync(Expression> predicate, Expression> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// decimal GetSum(Expression> predicate, Expression> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// Task GetSumAsync(Expression> predicate, Expression> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// float GetSum(Expression> predicate, Expression> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 获取数据某个字段的合计 /// /// 条件表达式树 /// 字段 /// 是否使用WITH(NoLock) /// 是否缓存 /// 缓存时长(分钟) /// Task GetSumAsync(Expression> predicate, Expression> field, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); #endregion #region 分页查询 /// /// 根据条件查询分页数据 /// /// 判断集合 /// 排序方式 /// 当前页面索引 /// 分布大小 /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// IPageList QueryPage(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 根据条件查询分页数据 /// /// 判断集合 /// 排序方式 /// 当前页面索引 /// 分布大小 /// /// 是否使用WITH(NoLock) /// 是否启用缓存 /// 缓存时长(分钟) /// Task> QueryPageAsync(Expression> predicate, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20, bool blUseNoLock = false, bool isDataCache = false, int cacheTimes = int.MaxValue); #endregion #region 联表查询 /// /// 查询-多表查询 /// /// 实体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, bool isDataCache = false, int cacheTimes = int.MaxValue) 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, bool isDataCache = false, int cacheTimes = int.MaxValue) 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, bool isDataCache = false, int cacheTimes = int.MaxValue) 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, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new(); /// /// 查询-三表查询 /// /// 实体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, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new(); /// /// 查询-三表查询 /// /// 实体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, bool isDataCache = false, int cacheTimes = int.MaxValue) where T1 : class, new(); #endregion #region SQL查询 /// /// 执行sql语句并返回List /// /// /// /// /// List SqlQuery(string sql, List parameters); /// /// 执行sql语句并返回List /// /// /// /// 是否启用缓存 /// 缓存时长(分钟) /// Task> SqlQueryable(string sql, bool isDataCache = false, int cacheTimes = int.MaxValue); /// /// 执行调用存储过程(返回DataTable) /// /// 存储过程名称 /// 参数 /// Task SqlQueryDataTableByStoredProcedure(string useStoredProcedureName, List parameters); /// /// 执行调用存储过程(返回List) /// /// 返回类型 /// 存储过程名称 /// 参数 /// Task> SqlQueryableByStoredProcedure(string useStoredProcedureName, List parameters); #endregion } }