2017-01-31 9 views

ответ

1

Query() возвращает IEnumerable. Когда вы начинаете перебирать IEnumerable, внутри Dapper вызывается метод с Yield для заполнения POCO линией результатов, поэтому ваши результаты будут постепенно развиваться по мере того, как вы перебираете их. Вам необходимо сохранить соединение с БД открытым, как вы это делаете, потому что вам не гарантировано, что все строки результирующего набора возвращаются сразу. Действительно, для больших результирующих наборов вы хотите иметь возможность прокручивать их, не имея при этом всего набора результатов в памяти приложения. В любой момент вы можете вызвать ToList() в своем IEnumerable, а затем вы материализовали все, и вы можете закрыть свое соединение.

+0

Спасибо @ user1585345. Итак, Dapper материализуется в 'ToList()' и по мере повторения результатов. –

+0

не совсем. Вы никогда не сможете назвать ToList(), и в этом случае ваши результаты будут проиллюстрированы по строкам (итерация). Если вы вызываете ToList() * all *, ваши результаты материализуются. – bbsimonbb

 Смежные вопросы

  • Нет связанных вопросов^_^