Не пытайтесь решить потенциальные проблемы с производительностью слишком рано (но не игнорируйте их тоже).
Как всегда, как вы фактически выполняете запрос, зависито характере данных и о том, как они будут использоваться.Если у вас есть пакетный процесс, выполняющий десятки / тысячи записей, вы должны позволить SQL Server позаботиться об этом.
Однако, если вам нужно выполнить запрос только один или два раза, сЧем меньше записей, тем быстрее вы получите цикл в памяти.
Недостающее решение для вас заключается в следующем: используйте спецификацию запроса , чтобы обернуть запрос и сделать Author
объект использует эту новую спецификацию запроса.
Изначально просто сделайте это простым циклом.Когда вы обнаружите, что он слишком медленный, замените цикл вызовом базы данных (с помощью метода FindAwardWinningBookCount
на вашем AuthorRepository
).
Важной частью является : вашОбъект Author
больше не отвечает за обработку запроса - вместо него используется Спецификация запроса .Изменение реализации спецификации запроса должно , а не влиять на поведение вашего Author
.
. Подробнее см. На страницах 229-234 в книге Эвана.