Здравствуйте, Gengzu, Вы писали:
G>IQueriable очень хороший интерфейс, но увы, часто его использование приводит к непредсказуемым последствиям. и я не против его использования как такового, но я против протаскивания его через все слои приложения.
Еще раз. Зачем его протаскивать через все слои?
Z>>Совсем не очевидно. Настолько не очевидно, что я требую доказательств. Как и доказательство того, что запрос надо строить максимально далеко от слоя БД и протаскивать его через все слои попутно добавляя в них чего-то там. Я знаю, что так может получиться, если самостоятельно нарисовать кучу этих самых слоев, только вот зачем это делать?
G>что именно не очевидно?
Я русским языком написал что. Повторять не буду.
G>кто сказал что запрос нужно строить максимально далеко? наоборот. репозиторий лежит как можно ближе к нему. между ними только ORM.
Путаетесь в показаниях. Далеко говорилось не про репозитарий. Откуда появилось протаскивание через множество слоев в ваших рассуждениях?
G>имея IQueriable, человек начнёт писать запросы прямо в контроллере, например, при использовании ASP.NET MVC. и ведь начнёт. что приведёт опять же к размазанной дублируемой логики, плюс проблемы с тестированием.
А если и начнет? Где-то это вполне допустимо. На то они и контроллеры. Там где недопустимо — достаточно не инжектить в контроллер сессию, а инжектить сервисы, делающие нужные операции с БД. Это совсем не репозитарии, они абстрагируют бизнес логику, а не CRUD. Тестировать же операции с БД будет сложно в любом случае, в контроллере они или еще где.