Привязывание программно против. Источник данных объекта для производительности

StackOverflow https://stackoverflow.com/questions/4193014

Вопрос

Я использовал все связывать 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 небольшим, и держать там только информацию, которую вам нужно для выполнения действий на вашей странице, а не данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top