using System.Linq.Expressions; namespace F9WebAiTest.Domain.Common; /// 通用仓储接口 public interface IRepository where T : IEntity { Task GetByIdAsync(long id); Task> GetAllAsync(); Task> FindAsync(Expression> predicate); Task FirstOrDefaultAsync(Expression> predicate); Task AnyAsync(Expression> predicate); Task CountAsync(Expression> predicate); Task AddAsync(T entity); Task AddRangeAsync(IEnumerable entities); Task UpdateAsync(T entity); Task DeleteAsync(T entity); Task DeleteRangeAsync(IEnumerable entities); // 物理删除(不软删除,用于关联表避免唯一索引冲突) Task HardDeleteAsync(T entity); Task HardDeleteRangeAsync(IEnumerable entities); Task SaveChangesAsync(); }