Во-первых: сборки ничего не возвращают, они просто содержат один или несколько методов, которые могут возвращать наборы результатов, скалярные значения, возвращаемые значения.
Если у вас уже есть SqlDataReader
(это не ясно из формулировки Вопроса), то вы были очень близки с возвращением набора результатов.
Класс SqlDataReader не имеет конструктора. Как SqlCommand.ExecuteReader () возвращает его?
Как метод ExecuteReader
создает SqlDataReader
не важно. важно , важно то, что возвращает и возвращает SqlDataReader
. Следовательно, вам просто нужно сделать следующее:
SqlDataReader _Reader = SqlCommand.ExecuteReader();
SqlContext.Pipe.Send(_Reader);
// be sure to call .Dispose() on the SqlDataReader, SqlCommand, and SqlConnection objects,
// if they are not each in their own using() blocks
Этот метод довольно эффективен, но не позволяет вам перехватывать строки SqlDataReader перед передачей их обратно как строк набора результатов. Поэтому, если вам нужно манипулировать значениями перед отправкой их обратно вызывающей стороне, используйте следующие методы: SqlContext.Pipe
:
SendResultsStart(SqlDataRecord)
SendResultsRow(SqlDataRecord)
SendResultsEnd()