Сохраняет ли он свои данные в ViewState и не ударил снова в базу данных, если вы не вызовете метод .Select?
Нет, данные не сохраняются в ViewState .В сетке представлений состояния представления и других аналогичных списках сохраняется общее состояние, например столбец сортировки, страница, общее количество страниц, состояние элемента управления, но не данные.
Кэшируется для каждого пользователя aХорошая идея
Кэширование на пользователя на стороне сервера не очень хорошая идея, за исключением случаев, когда кэширование длится всего несколько минут или / и данные, которые вы собираетесь кэшировать,очень маленький.Если вы кешируете на одного пользователя большое количество данных в течение длительного времени, они станут слишком большими, особенно если пользователь начинает читать много страниц, что в конце у вас возникла та же проблема.
Теперь вам нужнопоказать большой объем данных, которые поступают из связи многих таблиц, тогда, возможно, лучше кэшировать полное отношение таблиц к «одной плоской таблице».
Должен ли я просто попадать в базу данных каждый развместо того, чтобы хранить мой огромный список в ViewState?
Это также зависит от того, насколько быстро вы спроектировали чтение ваших данных.Для меня лучше держать ViewState маленьким и хранить там только ту информацию, которая необходима для выполнения действий на вашей странице, а не данные.