Для этого нет никаких требований. Вы называете методы наиболее естественным для использования способом.
Обычно мой репозиторий выглядит так (код C #)
public interface ImCommandRepository
{
Entity Get(int id);
Entity Get(string name);
void Save(Entity value);
void Delete(int id);
}
public interface ImQueryRepository
{
PaginatedResult<ViewModel> GetEntitiesA(int skip,int take);
PaginatedResult<ViewModel> SearchEntitiesB(string keyword,int skip,int take);
}
Как вы видите, я использую разные репозитории для обновления персистентности и для запроса персистентности. В то время как первый имеет довольно распространенные методы CRUD для связи с объектами, которые будут созданы / обновлены / удалены, другой просто перечисляет или ищет в БД и возвращает модель, подходящую для представлений. Вы можете добавлять или называть методы в зависимости от использования, вы НЕ ДОЛЖНЫ реализовывать хранилище как коллекцию (то есть реализовывать предопределенный интерфейс), просто относитесь к нему как к одному. Важно сохранить независимость домена от постоянной реализации.