using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Threading; using System.Threading.Tasks; namespace UserManagement.Common.GenericRespository { public interface IGenericRepository where TC : class { IQueryable All { get; } IQueryable AllIncluding(params Expression>[] includeProperties); //Task> AllIncludingAsync(params Expression>[] includeProperties); IQueryable FindByInclude(Expression> predicate, params Expression>[] includeProperties); //Task> FindByIncludeAsync(Expression> predicate, params Expression>[] includeProperties); IQueryable FindBy(Expression> predicate); //Task> FindByAsync(Expression> predicate); //IQueryable FindOnly(Expression> predicate); TC Find(Guid id); Task FindAsync(Guid id, CancellationToken cancellationToken = default); void Add(TC entity); void Update(TC entity); void UpdateRange(List entities); void Delete(Guid id); void Delete(TC entity); void Remove(TC entity); void InsertUpdateGraph(TC entity); void RemoveRange(IEnumerable lstEntities); void AddRange(IEnumerable lstEntities); } }