Какой параметр длины следует передать в SqlDataReader.GetBytes()

У меня есть SqlDataReader, и мне нужно прочитать из него столбец varbinary(max) с помощью метода SqlDataReader.GetBytes(). Этот метод заполняет массив байтов и поэтому должен знать, какую длину данных следует читать.

Вот тут-то я и запутался. Ясно, что я хочу прочитать все данные, которые были возвращены из базы данных в этой строке/столбце, так какой параметр «длина» мне передать?

Насколько я вижу, SqlDataReader не предоставляет никаких методов для определения доступной длины данных, поэтому этот метод кажется мне довольно неудобным.

У меня возник соблазн просто передать здесь int.MaxValue и забыть о проблеме, но что-то в этом мне не подходит.

Я знаю, что вместо этого я могу позвонить

byte[] value = (byte[])dataReader["columnName"];

... и это, кажется, полностью решает внутреннюю проблему длины. Однако я работаю с набором сложных шаблонов генерации кода, построенных на основе методов SqlDataReader.GetXXXX(). Поэтому я привязан к использованию GetBytes и должен понимать его правильное использование.

22
задан Martyn 21 June 2012 в 09:26
поделиться