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