using System.Linq.Expressions;
|
using SqlSugar;
|
|
namespace KH.WMS.Core.Database.Repositories;
|
|
/// <summary>
|
/// 仓储接口
|
/// </summary>
|
/// <typeparam name="T">实体类型</typeparam>
|
public interface IRepository<T, TKey>
|
where T : class
|
where TKey : struct
|
{
|
/// <summary>
|
/// 根据ID获取实体
|
/// </summary>
|
Task<T?> GetByIdAsync(TKey id);
|
|
/// <summary>
|
/// 获取所有实体
|
/// </summary>
|
Task<List<T>> GetAllAsync();
|
|
/// <summary>
|
/// 根据条件查询实体
|
/// </summary>
|
Task<List<T>> GetListAsync(Expression<Func<T, bool>> expression);
|
|
/// <summary>
|
/// 根据条件查询单个实体
|
/// </summary>
|
Task<T?> GetFirstOrDefaultAsync(Expression<Func<T, bool>> expression);
|
|
/// <summary>
|
/// 分页查询
|
/// </summary>
|
Task<(List<T> Items, int Total)> GetPagedListAsync(int pageIndex, int pageSize, Expression<Func<T, bool>>? expression = null);
|
|
/// <summary>
|
/// 插入实体
|
/// </summary>
|
Task<TKey> InsertAsync(T entity);
|
|
/// <summary>
|
/// 批量插入实体
|
/// </summary>
|
Task<List<TKey>> InsertAsync(List<T> entities);
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="entity"></param>
|
/// <returns></returns>
|
Task<T> InsertReturnEntityAsync(T entity);
|
|
/// <summary>
|
///
|
/// </summary>
|
/// <param name="entities"></param>
|
/// <returns></returns>
|
Task<List<T>> InsertReturnEntityAsync(List<T> entities);
|
|
/// <summary>
|
/// 更新实体
|
/// </summary>
|
Task<bool> UpdateAsync(T entity);
|
|
/// <summary>
|
/// 批量更新实体
|
/// </summary>
|
Task<bool> UpdateAsync(List<T> entities);
|
|
/// <summary>
|
/// 删除实体
|
/// </summary>
|
Task<bool> DeleteAsync(TKey id);
|
|
/// <summary>
|
/// 批量删除实体
|
/// </summary>
|
Task<bool> DeleteAsync(List<TKey> ids);
|
|
/// <summary>
|
/// 根据条件删除实体
|
/// </summary>
|
Task<bool> DeleteAsync(Expression<Func<T, bool>> expression);
|
|
/// <summary>
|
/// 检查实体是否存在
|
/// </summary>
|
Task<bool> ExistsAsync(Expression<Func<T, bool>> expression);
|
|
/// <summary>
|
/// 获取实体数量
|
/// </summary>
|
Task<int> CountAsync(Expression<Func<T, bool>>? expression = null);
|
}
|