Как вы считываете массив байтов из потока данных в C #?
-
08-07-2019 - |
Вопрос
У меня есть DataSet
с помощью DataTable
это правильно заполняет один DataRow
через TableAdapter
.
Я могу извлекать данные из потока данных с помощью такого кода:
dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];
У меня есть еще один столбец под названием DataFile типа varbinary(max)
.
Когда я пытаюсь извлечь данные этого столбца из того же DataRow
как и выше, я ничего не получаю.
byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];
Если я поставлю точку останова в этом месте, я смогу заглянуть в dataFileDataRow, заглянуть в свойство itemArray и увидеть, что двоичные данные находятся в позиции 5 в itemArray.
Я попытался получить доступ к itemArray напрямую, используя его индекс, но массив байтов не копируется в переменную fileFromDatabase.
Я также заметил, что добавление fileFromDatabase в мои часы приводит к этой ошибке:
"Имя "fileFromDatabase" не существует в текущем контексте"
Выполнение по-прежнему находится в том же блоке, что и определение fileFromDatabase, поэтому я не понимаю, как это может быть вырвано из контекста.
У меня была настроена конфигурация Visual Studio на Release вместо Debug.Это приводило к тому, что я не видел информацию об отладке в реальном времени, которую я искал при попытке изучить fileFromDatabase.После переключения с Release на Debug теперь я могу видеть переменную в watch и могу убедиться, что приведенный выше код работает правильно.
Решение
Приведенный выше код работает, убедитесь, что вы настроили свой отладчик на компиляцию для отладки, а НЕ для выпуска.
Кит