DataReader или DataSet при получении по запросу нескольких recordsets в ASP.NET

Вы использовали конкатенацию строк, которая переводит объект в формат JSON. Вместо этого используйте

console.log('Result:', myresult);

.

РЕДАКТИРОВАТЬ: Я только что попробовал это в консоли JavaScript Firefox:

>> const myresult = [];
undefined

>> const newobject = {'myname': 1};
undefined

>> console.log('NEWOBJECT:', newobject);
NEWOBJECT: Object { myname: 1 }
debugger eval code:1:1
undefined

>> myresult.push(newobject);
1

>> console.log('MYRESULT:', myresult);
MYRESULT: Array [ {…} ]
debugger eval code:1:1
undefined

т.е. регистрация объекта работает нормально.

11
задан GernBlandston 7 October 2008 в 20:32
поделиться

9 ответов

Всегда помещайте свои данные в классы, определенные для определенного использования. Не раздавайте DataSets или DataReaders.

4
ответ дан 3 December 2019 в 03:05
поделиться

Если Ваш сохраненный proc возвращает несколько наборов, используйте DataReader. NextResult для усовершенствования к следующему блоку данных. Таким образом, можно получить все данные, загрузить их в объекты и закрыть средство чтения как можно скорее. Это будет самым быстрым методом для получения данных.

4
ответ дан 3 December 2019 в 03:05
поделиться

Если бы Вы не интересуетесь обновлением или удалением записей, Вы выбрали от базы данных, я предложил бы использовать DataReader. В основном DataSet внутренне использует несколько Datareaders, таким образом, DataReader должен дать Вам хорошее преимущество производительности.

2
ответ дан 3 December 2019 в 03:05
поделиться

Отобразите DataReader на промежуточные объекты и затем свяжите Ваши средства управления с помощью тех объектов. Может быть нормально использовать DataSets при определенных обстоятельствах, но это немногочисленно, когда у Вас есть веские причины "просто получения данных". Независимо от того, что Вы делаете, не передавайте DataReader своим средствам управления для закрытия ряд (не, что Вы сказали рассмотрение этого).

Мое персональное предпочтение состояло бы в том, чтобы использовать ORM, но если Вы собираетесь вручить списку свой доступ к данным, любой ценой я думаю, что необходимо предпочесть отображать DataReaders на объекты по использованию DataSets. Используя.NextResult, поскольку способом ограничить себя от удара базы данных многократно является обоюдоострый меч однако, так выберите мудро. Вы повторитесь, при попытке создать procs, которые всегда захватывают точно, что Вам нужно использование только одного вызова к базе данных. Если Ваше приложение является только несколькими страницами, оно, вероятно, в порядке, но вещи могут выйти из-под контроля быстро. Лично я имел бы один proc на тип объекта и затем поразил бы базу данных многократно (однажды для каждого типа объекта) для максимизации пригодности для обслуживания. Это - то, где ORM сияет, потому что хороший генерирует Sql, который получит Вас точно, что Вы хотите с одним вызовом в большинстве случаев.

3
ответ дан 3 December 2019 в 03:05
поделиться

Почти в каждой ситуации DataReaders являются лучшим решением для чтения из базы данных. DataReaders быстрее и требуют меньшей памяти, чем DataTables или DataSets.

Кроме того, DataSets может часто приводить к ситуациям, в которых повреждается модель OO. Это не очень объектно-ориентировано для раздавания реляционных данных/схем вместо объектов, которые знают, как управлять теми данными.

Так, для расширяемости, масштабируемости, модульный принцип и причины производительности, всегда используют DataReaders, если Вы считаете себя Реальным Programmer™ ;)

Проверьте ссылки на факты и дискуссию о двух на практике и теории.

2
ответ дан 3 December 2019 в 03:05
поделиться

Я перешел к методу, который использует DataReaders для всех вызовов, я заметил отмеченную производительность impovement, особенно в случаях, когда я загружаю выпадающие списки и другие простые объекты как этот.

Лично с несколькими холмами отбрасывания, я обычно перехожу к получению по запросу отдельных блоков данных, чтобы получить его, вместо того, чтобы сказать хранимую процедуру, которая возвращает 5 наборов результатов.

1
ответ дан 3 December 2019 в 03:05
поделиться

Смотрите в TableAdapters, которые доступны с.NET 2.0 и. То, что они делают, дают Вам силу DataTable со строгим контролем типов и позволяют Вам отображать Метод заполнения для него, который будет использовать DataReader для загрузки его. Ваш метод заполнения может быть существующими хранимыми процедурами, Вашим собственным AdHoc SQL, или даже позволить мастеру генерировать AdHod или Хранимую процедуру для Вас.

Можно найти это путем запуска нового объекта XSD DataSet в рамках проекта. Для таблиц, которые используются для больше, чем просто поиска, можно также отобразиться, вставляют/обновляют/удаляют методы в TableAdapter.

0
ответ дан 3 December 2019 в 03:05
поделиться
  1. Если у вас есть более 1000 записей, которые нужно перенести из базы данных.
  2. Если вас не очень интересует настраиваемое хранение и настраиваемое разбиение на страницы " Для GridView "
  3. Если на вашем сервере не хватает памяти.
  4. Если нет проблем с подключением вашу базу данных каждый раз, когда эта страница вызывается.

Тогда я думаю, что лучше использовать DataReader.

else

  1. Если у вас меньше 1000 записей, которые нужно вывести из базы данных.
  2. Если вас интересует сохранение и подкачка " Для GridView "
  3. Если на вашем сервере нет памяти стресс.
  4. Если вы хотите подключиться к своему DataBase всего один раз и получите преимущества Кэширования .

Тогда я думаю, что лучше использовать DataSet.

Надеюсь, что я прав.

7
ответ дан 3 December 2019 в 03:05
поделиться

Независимо от того, выбираете ли вы один набор результатов или несколько наборов результатов, похоже, что консенсус заключается в использовании DataReader вместо DataSet.

Что касается того, должны ли вы когда-либо возиться с несколькими наборами результатов, мудрость такова, что вы не должны, но я могу представить себе разумный класс исключений из этого правила: (тесно) связанные наборы результатов. Вы, конечно, не хотите добавлять запрос для возврата того же набора вариантов для раскрывающегося списка, который повторяется на сотнях или даже десятках страниц в вашем приложении, но несколько узко используемых наборов могут быть разумно объединены. В качестве примера я сейчас создаю страницу для отображения нескольких наборов «несоответствий» для пакета данных ETL. Ни один из этих запросов, скорее всего, не будет использоваться где-либо еще, поэтому было бы удобно инкапсулировать их как один sproc «получить несоответствия».С другой стороны, лучшая производительность при этом может быть незначительной по сравнению с обходом естественной архитектуры одного набора результатов вашего ORM или кода доступа к данным вручную.

2
ответ дан 3 December 2019 в 03:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: