В настоящее время я возвращаю все из моего репо в виде списка.Я хочу изменить их на IQueryable, чтобы люди могли уточнить результаты и не страдать от другого SQL-запроса (я использую nhibernate).
Есть несколько потенциальных проблем с тем, что у вас есть сейчас, икак ты хочешь это исправить.Репозиторий не должен возвращать все объекты в первую очередь.Он инкапсулирует доступ к данным и предоставляет бизнес-ориентированный интерфейс для сбора данных.Реализация репозитория относится к уровню доступа к данным, который достаточно умен, чтобы не возвращать все:
ordersRepo.FindDelinquent();
Возврат IQueryable из открытого метода - это не само решение, он просто переносит проблему куда-то в другое место, где он не принадлежит,Как бы вы протестировали код, который использует этот репозиторий?В чем смысл универсального репозитория, вы можете просто использовать NHibernate напрямую и связать все с ним.Пожалуйста, взгляните на эти две статьи, и этот ответ :
Преобразование часового пояса можно перенести в само назначение календаря:
DateTime end = appointement.EndTimeInStudentTimeZone(Student t)
или в
List<CalendarAppointment> appts
= GetAppointmentInStudentTimeZone(
Student student, DateTime start, DateTime end)
или лучшевсе же преобразуйте его, прежде чем вам действительно понадобится использовать это время (в пользовательском интерфейсе или службе).