У меня есть SqlDataReader, и мне нужно прочитать из него столбец varbinary(max) с помощью метода SqlDataReader.GetBytes(). Этот метод заполняет массив байтов и поэтому должен знать, какую длину данных следует читать.
Вот тут-то я и запутался. Ясно, что я хочу прочитать все данные, которые были возвращены из базы данных в этой строке/столбце, так какой параметр «длина» мне передать?
Насколько я вижу, SqlDataReader не предоставляет никаких методов для определения доступной длины данных, поэтому этот метод кажется мне довольно неудобным.
У меня возник соблазн просто передать здесь int.MaxValue и забыть о проблеме, но что-то в этом мне не подходит.
Я знаю, что вместо этого я могу позвонить
byte[] value = (byte[])dataReader["columnName"];
... и это, кажется, полностью решает внутреннюю проблему длины. Однако я работаю с набором сложных шаблонов генерации кода, построенных на основе методов SqlDataReader.GetXXXX(). Поэтому я привязан к использованию GetBytes и должен понимать его правильное использование.