Выбирает ли SqlDataReader по одной записи за раз из БД или по одному полю за раз?
Предположим, следующий запрос возвращает одну строку:
select columns_1, column_2, column_3
from some_Table
и предположим, что readerS ( readerS - это экземпляр, возвращаемый SqlCommand.ExecuteReader ()
) читает только column_3 перед закрытием соединения:
readerS[“column_3”].ToString();
Теперь readerS будет извлекать с сервера sql только значение «column_3» или будет выбирать все 3 столбца, даже если он будет читать только один?
Причина, по которой я спрашиваю об этом, заключается в том, что я сейчас читаю книгу по программированию веб-сайтов, и автор упоминает, что он будет кодировать объекты DLL, чтобы использовать шаблон отложенной загрузки.
Вкратце - когда создается объект DLL, выполняется запрос к БД (через DAL), который извлекает данные из различных столбцов и вместе с этим заполняет свойства нашего объекта DLL. Поскольку одно из полей (назовите его «L») может содержать довольно значительный объем текста, автор решил извлечь это поле только при первом чтении этого свойства.
Но когда я посмотрел на хранимую процедуру, используемую автором для извлечения столбцов и заполнения свойств объекта DLL (за исключением свойства L , которое не заполняется), я заметил, что процедура также извлекается L , даже если он не будет использоваться для заполнения соответствующего свойства. Теперь, если DataReader извлекает целую строку, а не только поле, которое мы на самом деле читаем, то автор действительно не реализовал шаблон отложенной загрузки?!