using System; using System.Collections.Generic; using System.Linq.Expressions; namespace BusinessLogic.Interfaces.Repositories { public interface IRepository where TEntity : class { IEnumerable>> Filters { get; } void AddFilter(Expression> filter); IEnumerable GetAll(); IEnumerable Find(Expression> predicate); TEntity SingleOrDefault(Expression> predicate); void Add(TEntity entity); void AddRange(IEnumerable entities); void Remove(TEntity entity); void RemoveRange(IEnumerable entities); void BulkInsert(IEnumerable entities); void BulkUpdate(IEnumerable entities); void BulkUpdate(IEnumerable entities, IEnumerable fieldExclusions); IEnumerable BulkSelectNotExisting(IEnumerable entities); } }