Получение записи sql varbinary с использованием корпоративной библиотеки Microsoft - PullRequest
2 голосов
/ 31 июля 2010

У меня есть эта строка кода

byte[] field1 = (reader.GetSqlBinary(reader.GetOrdinal("Field1")).Value;

, которая является SqlDataReader

Я пытаюсь преобразовать код для использования блока доступа к данным библиотеки предприятия, но не могу понять, какчтобы получить byte[], используя IDataReader.

Я хорошо просмотрел документы MS, но не смог найти ничего, что помогло.

1 Ответ

2 голосов
/ 31 июля 2010

Первое, что я бы попробовал (где i - reader.GetOrdinal("Field1")):

    byte[] firstTry = (byte[])reader.GetValue(i);

Если это не удастся, возможно:

byte[] secondTry;
using (var ms = new MemoryStream())
{
    byte[] buffer = new byte[8040]; // sql page size
    int read;
    long offset = 0;
    while ((read = (int)reader.GetBytes(i, offset, buffer, 0, buffer.Length)) > 0)
    {
        ms.Write(buffer, 0, read);
        offset += read; // oops! added this later... kinda important
    }
    secondTry = ms.ToArray();
}

Также обратите внимание, что поведение может слегка измениться в зависимости от того, указано ли CommandBehavior.SequentialAccess.

...