Возвращение считывателя данных

часто это действие состоит в

Возвращение считывателя данных гораздо быстрее, чем возвращение набора данных, так как вы не можете непосредственно оперировать содержимым считывателя; все, что вы можете, это быстро извлечь данные из считывателя и что-то с ними сделать. Часто это действие состоит в том, что вы используете эти данные для конструирования и заполнения некоторой объектной модели, а это именно то, что приходится делать набору данных и адаптеру данных, когда вы заполняете набор данных. Вот почему заполнять набор данных гораздо дольше, чем возвращать считыватель данных. В случае набора данных у вас имеется полная объектная модель в памяти, к которой вы имеете произвольный доступ для чтения/записи. Чтобы достичь того же с помощью считывателя данных, вам придется вытащить данные из строк, поступающих от считывателя, и начинить ими свою собственную объектную модель, прежде чем вы сможете делать с ними что-то осмысленное. В крупномасштабных объектно-ориентированных системах вам, возможно, именно это и потребуется сделать прежде всего. Типизированные наборы данных превосходны в качестве весьма легких, простых для конструирования и хранения в памяти объектов передачи данных, которыми вы можете оперировать в среднем ярусе дляобработки или передавать клиенту для представления. Однако часто ваши объекты среднего яруса должны не только инкапсулировать данные — они должны инкапсулировать еще и поведение. В этом случае вы, вероятно, будете проектировать свою собственную объектную модель, где многие из объектов могли бы инкапсулировать состояние, которое хранится в устойчивой форме в базе данных. Считыватель данных отлично подойдет в этом случае для быстрого чтения данных в объект или набор объектов, полученных от запроса извлечения к базе данных.

Допустим, например, у вас есть класс Customer, Определенный в вашей рабочей объектной модели, который инкапсулирует состояние и поведение, ассоциированные с заказчиками. Когда вы хотите работать с коллекцией заказчиков, вы извлекаете данные из базы данных подобно вышеприведенному коду, получая считыватель данных, который позволяет прочитать данные, ассоциированные с заказчиками. Теперь вам нужно перетащить эти данные в свои объекты заказчиков.