У меня есть общий интерфейс репозитория, который имеет обычные методы для сохранения, чтения и запроса с уровня сервиса, например так:
public interface IRepository<T>
{
T GetById(int id);
void Save(T entity);
void Update(T entity);
void Delete(T entity);
IEnumerable<T> GetAll();
}
Если у меня есть служба, например, служба пользователя, которая использует конкретную реализацию IRepository
с User
в качестве типа (IRepository<User>
), если самой службе может понадобиться что-то от другого IRepository
скажем IRepository<Admin>
должна ли служба вызывать IRepository<Admin>
напрямую или она должна вызывать связанную службу (т. Е. Службу, которая в основном имеет дело с хранилищем IRepository<Admin>
)?
Я лично вижу проблему, если вы извлекаете элементы непосредственно из хранилища, если, например, вы хотите применить определенные бизнес-правила до того, как результаты будут возвращены клиенту, но, с другой стороны, служба может захотеть работать необработанный набор результатов и применение его собственных правил к результатам, поэтому я немного запутался в том, какое направление выбрать, и любые предложения будут с благодарностью приняты.