using EFSecondLevelCache.Core; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; namespace Masuit.MyBlogs.Core.Infrastructure.Services.Interface { public interface IBaseService where T : class { /// /// 获取所有实体 /// /// 还未执行的SQL语句 IQueryable GetAll(); /// /// 获取所有实体(不跟踪) /// /// 还未执行的SQL语句 IQueryable GetAllNoTracking(); /// /// 从二级缓存获取所有实体 /// /// 还未执行的SQL语句 IEnumerable GetAllFromCache(); /// /// 获取所有实体 /// /// 映射实体 /// 还未执行的SQL语句 IQueryable GetAll() where TDto : class; /// /// 获取所有实体 /// /// 映射实体 /// 还未执行的SQL语句 IEnumerable GetAllFromCache() where TDto : class; /// /// 获取所有实体 /// /// 排序 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 IOrderedQueryable GetAll(Expression> @orderby, bool isAsc = true); /// /// 获取所有实体 /// /// 排序 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 IOrderedQueryable GetAllNoTracking(Expression> @orderby, bool isAsc = true); /// /// 获取所有实体 /// /// 排序 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 IEnumerable GetAllFromCache(Expression> @orderby, bool isAsc = true); /// /// 获取所有实体 /// /// 排序 /// 映射实体 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 IQueryable GetAll(Expression> @orderby, bool isAsc = true) where TDto : class; /// /// 获取所有实体 /// /// 排序 /// 映射实体 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 IEnumerable GetAllFromCache(Expression> @orderby, bool isAsc = true) where TDto : class; /// /// 基本查询方法,获取一个集合 /// /// 查询条件 /// 还未执行的SQL语句 IQueryable GetQuery(Expression> @where); /// /// 基本查询方法,获取一个集合 /// /// 排序 /// 查询条件 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 IOrderedQueryable GetQuery(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 基本查询方法,获取一个被AutoMapper映射后的集合 /// /// 查询条件 /// 还未执行的SQL语句 IQueryable GetQuery(Expression> @where) where TDto : class; /// /// 基本查询方法,获取一个被AutoMapper映射后的集合 /// /// 排序字段 /// 输出类型 /// 查询条件 /// 排序字段 /// 是否升序 /// 还未执行的SQL语句 /// IQueryable GetQuery(Expression> @where, Expression> @orderby, bool isAsc = true) where TDto : class; /// /// 基本查询方法,获取一个集合,优先从二级缓存读取 /// /// 查询条件 /// 还未执行的SQL语句 IEnumerable GetQueryFromCache(Expression> @where); /// /// 基本查询方法,获取一个集合,优先从二级缓存读取 /// /// 排序字段 /// 查询条件 /// 排序方式 /// 是否升序 /// 还未执行的SQL语句 IEnumerable GetQueryFromCache(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 基本查询方法,获取一个被AutoMapper映射后的集合,优先从二级缓存读取 /// /// 查询条件 /// 还未执行的SQL语句 IEnumerable GetQueryFromCache(Expression> @where) where TDto : class; /// /// 基本查询方法,获取一个被AutoMapper映射后的集合,优先从二级缓存读取 /// /// 排序字段 /// 输出类型 /// 查询条件 /// 排序方式 /// 是否升序 /// 还未执行的SQL语句 IEnumerable GetQueryFromCache(Expression> @where, Expression> @orderby, bool isAsc = true) where TDto : class; /// /// 基本查询方法,获取一个集合(不跟踪实体) /// /// 查询条件 /// 还未执行的SQL语句 IQueryable GetQueryNoTracking(Expression> @where); /// /// 基本查询方法,获取一个集合(不跟踪实体) /// /// 排序字段 /// 查询条件 /// 排序方式 /// 是否升序 /// 还未执行的SQL语句 IOrderedQueryable GetQueryNoTracking(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 获取第一条数据 /// /// 查询条件 /// 实体 T Get(Expression> @where); /// /// 获取第一条数据 /// /// 查询条件 /// 实体 T GetFromCache(Expression> @where); /// /// 获取第一条数据 /// /// 排序 /// 查询条件 /// 排序字段 /// 是否升序 /// 实体 T Get(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 获取第一条数据 /// /// 排序 /// 查询条件 /// 排序字段 /// 是否升序 /// 实体 T GetFromCache(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 获取第一条被AutoMapper映射后的数据 /// /// 查询条件 /// 实体 TDto Get(Expression> @where) where TDto : class; /// /// 获取第一条被AutoMapper映射后的数据 /// /// 查询条件 /// 实体 TDto GetFromCache(Expression> @where) where TDto : class; /// /// 获取第一条被AutoMapper映射后的数据 /// /// 排序 /// 映射实体 /// 查询条件 /// 排序字段 /// 是否升序 /// 映射实体 TDto Get(Expression> @where, Expression> @orderby, bool isAsc = true) where TDto : class; /// /// 获取第一条被AutoMapper映射后的数据 /// /// 排序 /// 映射实体 /// 查询条件 /// 排序字段 /// 是否升序 /// 映射实体 TDto GetFromCache(Expression> @where, Expression> @orderby, bool isAsc = true) where TDto : class; /// /// 获取第一条数据 /// /// 查询条件 /// 实体 Task GetAsync(Expression> @where); /// /// 获取第一条数据 /// /// 排序 /// 查询条件 /// 排序字段 /// 是否升序 /// 实体 Task GetAsync(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 获取第一条数据(不跟踪实体) /// /// 查询条件 /// 实体 T GetNoTracking(Expression> @where); /// /// 获取第一条数据(不跟踪实体) /// /// 排序 /// 查询条件 /// 排序字段 /// 是否升序 /// 实体 T GetNoTracking(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 获取第一条数据(异步,不跟踪实体) /// /// 查询条件 /// 实体 Task GetNoTrackingAsync(Expression> @where); /// /// 获取第一条数据(异步,不跟踪实体) /// /// 排序 /// 查询条件 /// 排序字段 /// 是否升序 /// 实体 Task GetNoTrackingAsync(Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 根据ID找实体 /// /// 实体id /// 实体 T GetById(object id); /// /// 根据ID找实体(异步) /// /// 实体id /// 实体 Task GetByIdAsync(object id); /// /// 高效分页查询方法 /// /// /// 第几页 /// 每页大小 /// 数据总数 /// where Lambda条件表达式 /// orderby Lambda条件表达式 /// 升序降序 /// 还未执行的SQL语句 IQueryable GetPages(int pageIndex, int pageSize, out int totalCount, Expression> where, Expression> orderby, bool isAsc); /// /// 高效分页查询方法,取出被AutoMapper映射后的数据集合 /// /// /// /// 第几页 /// 每页大小 /// 数据总数 /// where Lambda条件表达式 /// orderby Lambda条件表达式 /// 升序降序 /// 还未执行的SQL语句 IQueryable GetPages(int pageIndex, int pageSize, out int totalCount, Expression> where, Expression> orderby, bool isAsc) where TDto : class; /// /// 高效分页查询方法,优先从二级缓存读取 /// /// /// 第几页 /// 每页大小 /// 数据总数 /// where Lambda条件表达式 /// orderby Lambda条件表达式 /// 升序降序 /// 还未执行的SQL语句 EFCachedQueryable GetPagesFromCache(int pageIndex, int pageSize, out int totalCount, Expression> @where, Expression> @orderby, bool isAsc); /// /// 高效分页查询方法,优先从二级缓存读取,取出被AutoMapper映射后的数据集合 /// /// /// /// 第几页 /// 每页大小 /// 数据总数 /// where Lambda条件表达式 /// orderby Lambda条件表达式 /// 升序降序 /// 还未执行的SQL语句 EFCachedQueryable GetPagesFromCache(int pageIndex, int pageSize, out int totalCount, Expression> @where, Expression> @orderby, bool isAsc) where TDto : class; /// /// 高效分页查询方法(不跟踪实体) /// /// /// 第几页 /// 每页大小 /// 数据总数 /// where Lambda条件表达式 /// orderby Lambda条件表达式 /// 升序降序 /// 还未执行的SQL语句 IQueryable GetPagesNoTracking(int pageIndex, int pageSize, out int totalCount, Expression> @where, Expression> @orderby, bool isAsc = true); /// /// 根据ID删除实体 /// /// 实体id /// 删除成功 bool DeleteById(object id); /// /// 根据ID删除实体并保存 /// /// 实体id /// 删除成功 bool DeleteByIdSaved(object id); /// /// 根据ID删除实体并保存(异步) /// /// 实体id /// 删除成功 Task DeleteByIdSavedAsync(object id); /// /// 删除实体并保存 /// /// 需要删除的实体 /// 删除成功 bool DeleteEntity(T t); /// /// 根据条件删除实体 /// /// 查询条件 /// 删除成功 int DeleteEntity(Expression> @where); /// /// 根据条件删除实体 /// /// 查询条件 /// 删除成功 int DeleteEntitySaved(Expression> @where); /// /// 根据条件删除实体 /// /// 查询条件 /// 删除成功 Task DeleteEntitySavedAsync(Expression> @where); /// /// 根据条件删除实体(异步) /// /// 查询条件 /// 删除成功 Task DeleteEntityAsync(Expression> @where); /// /// 删除实体并保存 /// /// 需要删除的实体 /// 删除成功 bool DeleteEntitySaved(T t); /// /// 删除实体并保存(异步) /// /// 需要删除的实体 /// 删除成功 Task DeleteEntitySavedAsync(T t); /// /// 添加实体 /// /// 需要添加的实体 /// 添加成功 T AddEntity(T t); /// /// 添加实体并保存 /// /// 需要添加的实体 /// 添加成功 T AddEntitySaved(T t); /// /// 添加实体并保存(异步) /// /// 需要添加的实体 /// 添加成功 Task AddEntitySavedAsync(T t); /// /// 统一保存的方法 /// /// 受影响的行数 int SaveChanges(); /// /// 统一保存数据 /// /// 受影响的行数 Task SaveChangesAsync(); /// /// 判断实体是否在数据库中存在 /// /// 查询条件 /// 是否存在 bool Any(Expression> @where); /// /// 统计符合条件的个数 /// /// 查询条件 /// int Count(Expression> @where); /// /// 删除多个实体 /// /// 实体集合 /// 删除成功 bool DeleteEntities(IEnumerable list); /// /// 删除多个实体并保存 /// /// 实体集合 /// 删除成功 bool DeleteEntitiesSaved(IEnumerable list); /// /// 删除多个实体并保存(异步) /// /// 实体集合 /// 删除成功 Task DeleteEntitiesSavedAsync(IEnumerable list); /// /// 添加多个实体并保存 /// /// 实体集合 /// 添加成功 IEnumerable AddEntities(IList list); /// /// 添加多个实体并保存(异步) /// /// 实体集合 /// 添加成功 Task> AddEntitiesAsync(IList list); } }