using System.Linq.Expressions;
namespace HardwarePerformance.Application.Interfaces
{
///
/// 通用Repository接口,定义基本的CRUD操作
///
/// 实体类型
public interface IRepository where T : class
{
///
/// 根据ID获取实体
///
/// 实体ID
/// 实体对象
Task GetByIdAsync(int id);
///
/// 获取所有实体
///
/// 实体列表
Task> GetAllAsync();
///
/// 根据条件查询实体
///
/// 查询条件
/// 符合条件的实体列表
Task> FindAsync(Expression> predicate);
///
/// 检查是否存在符合条件的实体
///
/// 查询条件
/// 是否存在
Task ExistsAsync(Expression> predicate);
///
/// 添加实体
///
/// 要添加的实体
/// 添加后的实体
Task AddAsync(T entity);
///
/// 批量添加实体
///
/// 要添加的实体列表
/// 添加后的实体列表
Task> AddRangeAsync(IEnumerable entities);
///
/// 更新实体
///
/// 要更新的实体
/// 更新后的实体
Task UpdateAsync(T entity);
///
/// 删除实体
///
/// 要删除的实体
/// 是否删除成功
Task DeleteAsync(T entity);
///
/// 根据ID删除实体
///
/// 实体ID
/// 是否删除成功
Task DeleteByIdAsync(int id);
///
/// 获取实体数量
///
/// 实体总数
Task CountAsync();
///
/// 根据条件获取实体数量
///
/// 查询条件
/// 符合条件的实体数量
Task CountAsync(Expression> predicate);
}
}