У меня есть следующий общий репозиторий:
public class GenericRepository<TEntity> where TEntity : class {
private EFDbContext context;
private DbSet<TEntity> dbSet;
public GenericRepository(EFDbContext context) {}
public IEnumerable<TEntity> GetAll() {}
public IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null, Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "") {}
public TEntity GetByID(int id) {}
public void Insert(TEntity entity) {}
public void Delete(int id) {}
public void Delete(TEntity entity) {}
public void Update(TEntity entity) {}
}
Теперь я понимаю, как я могу использовать это для своих сущностей, но я не понимаю, что делать, если сущность нуждается не только в этих методах? Скажем, у меня есть сущность под названием «Турнир», и я хочу получить все группы в этом турнире, куда пойдет метод «GetTournamentGroups»?
Должен ли я вместо использования универсального репозитория написать базовый интерфейс репозитория, от которого наследуются все собственные интерфейсы сущностей, а затем просто добавить дополнительные методы, необходимые для каждой сущности?