using System.Linq.Expressions; using SqlSugar; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Uow; namespace Yi.Framework.SqlSugarCore.Abstractions { /// /// SqlSugar仓储接口 /// /// 实体类型 public interface ISqlSugarRepository : IRepository, IUnitOfWorkEnabled where TEntity : class, IEntity, new() { #region 数据库访问器 /// /// 获取SqlSugar客户端实例 /// ISqlSugarClient _Db { get; } /// /// 获取查询构造器 /// ISugarQueryable _DbQueryable { get; } /// /// 异步获取数据库上下文 /// Task GetDbContextAsync(); /// /// 获取删除操作构造器 /// Task> AsDeleteable(); /// /// 获取插入操作构造器 /// Task> AsInsertable(TEntity entity); /// /// 获取批量插入操作构造器 /// Task> AsInsertable(List entities); /// /// 获取查询构造器 /// Task> AsQueryable(); /// /// 获取SqlSugar客户端 /// Task AsSugarClient(); /// /// 获取租户操作接口 /// Task AsTenant(); /// /// 获取更新操作构造器 /// Task> AsUpdateable(); /// /// 获取实体更新操作构造器 /// Task> AsUpdateable(TEntity entity); /// /// 获取批量更新操作构造器 /// Task> AsUpdateable(List entities); #endregion #region 查询操作 /// /// 根据主键获取实体 /// Task GetByIdAsync(dynamic id); /// /// 获取满足条件的单个实体 /// Task GetSingleAsync(Expression> predicate); /// /// 获取满足条件的第一个实体 /// Task GetFirstAsync(Expression> predicate); /// /// 判断是否存在满足条件的实体 /// Task IsAnyAsync(Expression> predicate); /// /// 获取满足条件的实体数量 /// Task CountAsync(Expression> predicate); /// /// 获取所有实体 /// Task> GetListAsync(); /// /// 获取满足条件的所有实体 /// Task> GetListAsync(Expression> predicate); #endregion #region 分页查询 /// /// 获取分页数据 /// Task> GetPageListAsync( Expression> predicate, int pageIndex, int pageSize); /// /// 获取排序的分页数据 /// Task> GetPageListAsync( Expression> predicate, int pageIndex, int pageSize, Expression>? orderByExpression = null, OrderByType orderByType = OrderByType.Asc); #endregion #region 插入操作 /// /// 插入实体 /// Task InsertAsync(TEntity entity); /// /// 插入或更新实体 /// Task InsertOrUpdateAsync(TEntity entity); /// /// 批量插入或更新实体 /// Task InsertOrUpdateAsync(List entities); /// /// 插入实体并返回自增主键 /// Task InsertReturnIdentityAsync(TEntity entity); /// /// 插入实体并返回长整型自增主键 /// Task InsertReturnBigIdentityAsync(TEntity entity); /// /// 插入实体并返回雪花ID /// Task InsertReturnSnowflakeIdAsync(TEntity entity); /// /// 插入实体并返回实体 /// Task InsertReturnEntityAsync(TEntity entity); /// /// 批量插入实体 /// Task InsertRangeAsync(List entities); #endregion #region 更新操作 /// /// 更新实体 /// Task UpdateAsync(TEntity entity); /// /// 批量更新实体 /// Task UpdateRangeAsync(List entities); /// /// 条件更新指定列 /// Task UpdateAsync( Expression> columns, Expression> predicate); #endregion #region 删除操作 /// /// 删除实体 /// Task DeleteAsync(TEntity entity); /// /// 批量删除实体 /// Task DeleteAsync(List entities); /// /// 条件删除 /// Task DeleteAsync(Expression> predicate); /// /// 根据主键删除 /// Task DeleteByIdAsync(dynamic id); /// /// 根据主键批量删除 /// Task DeleteByIdsAsync(dynamic[] ids); #endregion } /// /// SqlSugar仓储接口(带主键) /// /// 实体类型 /// 主键类型 public interface ISqlSugarRepository : ISqlSugarRepository, IRepository where TEntity : class, IEntity, new() { } }