using System.Linq.Expressions; namespace AipGateway.API.Domain.IRepositories.IGenericRepositories { public interface IGenericRepository : IQueriesRepository where T : class { Task GetAsync(int id); Task GetByString(string id); Task GetFirstOrDefaultAsync(Expression> predicate, params Expression>[] includes); Task> GetWhereAsync(Expression> predicate, params Expression>[] includes); Task GetFirstOrDefaultAsync(Expression> predicate); Task> GetAllAsync(params Expression>[] includes); Task AddAsync(T entity); Task AddRangeAsync(IEnumerable entity); void Update(T entity); void Delete(T entity); void DeleteRange(IEnumerable entities); Task ExistsAsync(Expression> predicate); IEnumerable ExecWithStoreProcedure(string query, params object[] parameters); } }