using System.Linq.Expressions; using SqlSugar; using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; using Yi.Framework.Infrastructure.Enums; namespace Yi.Framework.Infrastructure.Ddd.Repositories { public interface IRepository { /// /// 注释一下,严格意义这里应该protected,但是我认为 简易程度 与 耦合程度 中是需要进行衡量的 /// ISugarQueryable _DbQueryable { get; } //单查 Task GetByIdAsync(dynamic id); Task GetSingleAsync(Expression> whereExpression); Task GetFirstAsync(Expression> whereExpression); Task IsAnyAsync(Expression> whereExpression); Task CountAsync(Expression> whereExpression); //多查 Task> GetListAsync(); Task> GetListAsync(Expression> whereExpression); //分页查 Task> GetPageListAsync(Expression> whereExpression, int pageNum, int pageSize); Task> GetPageListAsync(Expression> whereExpression, int pageNum, int pageSize, Expression>? orderByExpression = null, OrderByEnum orderByType = OrderByEnum.Asc); Task> GetPageListAsync(Expression> whereExpression, int pageNum, int pageSize, string? orderBy, OrderByEnum orderByType = OrderByEnum.Asc); Task> GetPageListAsync(Expression> whereExpression, IPagedAndSortedResultRequestDto page); Task> GetPageListAsync(Expression> whereExpression, IPagedAndSortedResultRequestDto page, Expression>? orderByExpression = null, OrderByEnum orderByType = OrderByEnum.Asc); Task> GetPageListAsync(Expression> whereExpression, IPagedAndSortedResultRequestDto page, string? orderBy, OrderByEnum orderByType = OrderByEnum.Asc); //插入 Task InsertAsync(T insertObj); Task InsertOrUpdateAsync(T data); Task InsertOrUpdateAsync(List datas); Task InsertReturnIdentityAsync(T insertObj); Task InsertReturnBigIdentityAsync(T insertObj); Task InsertReturnSnowflakeIdAsync(T insertObj); Task InsertReturnEntityAsync(T insertObj); Task InsertRangeAsync(List insertObjs); //更新 Task UpdateAsync(T updateObj); Task UpdateRangeAsync(List updateObjs); Task UpdateAsync(Expression> columns, Expression> whereExpression); Task UpdateIgnoreNullAsync(T updateObj); //删除 Task DeleteAsync(T deleteObj); Task DeleteAsync(List deleteObjs); Task DeleteAsync(Expression> whereExpression); Task DeleteByIdAsync(dynamic id); Task DeleteByIdsAsync(dynamic[] ids); } }