namespace HrynCo.DAL.EF.Core; using System.Linq.Expressions; using HrynCo.DAL.Abstract.Entities; public interface IEfRepository { void ClearChangeTracker(); } public interface IEfRepository : IEfRepository where TEntity : IEntity where TEntityId : struct { TEntity Add(TEntity entity, bool save = true); void Add(TEntity[] entities, bool save = true); Task AddAsync(TEntity entity, bool save = true); void Delete(TEntity[] entities); void Delete(TEntity entity); void Delete(IEnumerable id); void Delete(TEntityId id); Task DeleteAsync(TEntityId id); Task DeleteAsync(IEnumerable id); Task DeleteAsync(TEntity entity); IQueryable Get( Expression>? filter = null, Func, IOrderedQueryable>? orderBy = null, string includeProperties = ""); IQueryable GetAll(); void RemoveRange(IEnumerable entities); void Remove(TEntity entity); Task> GetAllAsync(); Task Exists(TEntityId id); TEntity? GetById(TEntityId id); Task GetByIdAsync(TEntityId id); Task UpdateAsync(TEntity entity, bool save = true); void Update(TEntity entity, bool save = true); Task SaveChangesAsync(); } public interface IEfRepository : IEfRepository where TEntity : IEntity { }