Здравствуйте, Gengzu, Вы писали:
G>3й вариант предпочтительней, ибо вносит большую прозрачность в код. к тому же при необходимости может будет заменить ORM на другой, переписав лишь репозиторий. либо вообще переход на NoSQL. Другое дело если ничего такого не предвидится никогда.
Это фантастика. Просто так взять и поменять ORM может получиться только в очень простых приложениях. А поддерживать абстракцию и бороться с ней придется весь цикл жизни приложения.
G>выносить наружу IQueriable плохо тем, что любой разработчик сможет дописать что угодно в запрос, а это приведёт в свою очередь как к дублированию кода, так и к кривым SQL запросам.
А не выносить — приведет к навигационному доступу и куче однострочников которые используются в одном месте.