У меня есть следующий общий репозиторий:EF Использование общих и конкретных репозиториев
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»?
Должен ли я вместо использования общего репозитория написать основной интерфейс репозитория, который наследует все собственные интерфейсы сущностей, а затем просто добавляет дополнительные методы, необходимые для каждого объекта?
Хорошо, это имеет смысл, я просто подумал с шаблоном хранилища, который должен был содержать ваши сущности без методов и просто иметь свойства там. Не понял ли я это? – Mekswoll
Если вы считаете объекты только объектами передачи данных, вы понимаете правильность. В моем примере TournamentModel не является сущностью, он является частью бизнес-уровня (классы сущностей - это турниры и группы). –