Привязывание программно против. Источник данных объекта для производительности
-
11-10-2019 - |
Вопрос
Я использовал все связывать GridViews
, DetailViews
и т.д. на моей странице, используя ObjectDataSource
(Если это не могло этого сделать). Недавно я начал связывать все свои программно -программа. Я нахожу это намного чище и проще, хотя некоторые могут не согласиться.
Связывание с ObjectDataSource
Очевидно, что у него есть преимущества и недостатки, как и в программном порядке.
Скажи, что я связываю программно сетку (например, GridView1.DataSource = SomeList
), когда я меняю страницу на GridView, я также должен это кодировать. Каждый раз, когда страница меняется, я должен позвонить GridView1.DataSource = SomeList
опять таки. Очевидно с ObjectDataSource
Мне не нужно этого делать. Обычно я придерживаюсь своего SomeList
Ознакомьтесь с ViewState, поэтому, когда я меняю страницу, мне не нужно нажимать на базу данных каждый раз.
У меня вопрос: это как работает ObjectDataSource? Хранит ли он свои данные в ViewState и больше не попадает в базу данных, если вы не позвоните .Select
метод? Мне нравится пытаться получить наилучшую производительность из моих приложений и нажимать на базу данных как можно несколько раз, но мне не очень нравится идея хранения огромного списка в ViewState. Есть ли лучший способ сделать это? Является ли кэширование на пользователя хорошей идеей (или возможно)? Должен ли я просто нажимать на базу данных каждый раз вместо того, чтобы хранить свой огромный список в ViewState? Иногда лучше нажимать на базу данных, чем использовать ViewState?
Решение
Сохраняет ли он свои данные в ViewState и больше не попадает в базу данных, если вы не вызовуте метод. Выберите?
Нет, это не сохраняет данные в ViewState. Анкет В Gridview и других аналогичных списках View Saturn сохраняет общий статус, например, столбец сортировки, страницу, общие страницы, состояние управления, но не данные.
Кэширование на одного пользователя хорошая идея
Кэширование за пользователя На стороне сервера не очень хорошая идея, за исключением случаев, когда кэширование длится всего несколько минут или/и данные, которые вы собираетесь кэш, очень малы. Если вы кэш на одного пользователя большое количество данных в течение долгого времени они станут слишком особенно особенно, если пользователь начнет читать много страниц, это в конце у вас есть такая же проблема.
Теперь вам нужно показать большое количество данных, которые поступают от отношения многих таблиц, тогда, возможно, лучше кэшировать полную связь таблиц к «одному плоскому таблицу».
Должен ли я просто нажимать на базу данных каждый раз вместо того, чтобы хранить свой огромный список в ViewState?
Это также зависит от того, насколько быстро у вас есть чтение ваших данных. Для меня лучше сохранить SiewState небольшим, и держать там только информацию, которую вам нужно для выполнения действий на вашей странице, а не данных.