Первое, что я бы попробовал (где 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
.