У меня есть стандартный интерфейс репозитория в C #, который включает следующие методы:
IEnumerable<T> GetAll();
T GetById(int id);
void Delete(T entity);
void Add(T entity);
На моем доменном уровне все, что я создаю, это новая оболочка Unit of Work и передача ее в хранилище.Класс оболочки Unit of Work скрывает, использую ли я NHibernate или Entity Framework, и предоставляет метод Commit ().
Как в моем доменном слое, как я могу запрашивать объекты, которые соответствуют только определенным критериям?
Я думаю, что то, что я делаю сейчас, ужасно неэффективно.В настоящее время я делаю это:
var results = myRepository.GetAll().Where......
Если у меня очень большое количество объектов, собирается ли GetAll () возвращать каждый из них, прежде чем отфильтровать те, которые мне не нужны?Как я могу вообще предотвратить возвращение нежелательного объекта?
Очевидно, что я мог бы добавить больше интерфейсов к интерфейсу, но это не похоже на показ только операций CRUD через интерфейс.
т.е. - я не думаю, что я должен добавлять такие вещи, как (но, возможно, я ошибаюсь):
IList<T> GetAllWhereMeetsMyCriteria();