Dapper dot net имеет параметр buffer
(логическое значение), но, насколько я могу судить, единственное действие, которое он делает, — это преобразование результата в список перед его возвратом.
Согласно документации:
По умолчанию Dapper выполняет ваш sql и буферизует весь ридер по возвращении. В большинстве случаев это идеально, поскольку сводит к минимуму общие блокировки в базе данных и сокращает время работы сети с базой данных.
Однако при выполнении огромных запросов вам может потребоваться свести к минимуму объем памяти и загружать объекты только по мере необходимости. Для этого передайте buffered: false в метод Query.
Я не уверен, как это достигается приведением результата к списку. Я что-то упускаю? Моя единственная идея состоит в том, что предполагается установить CommandBehavior
для ExecuteReader
на CommandBehavior.SequentialAccess
(но это не так).