このコード行があります
byte[] field1 = (reader.GetSqlBinary(reader.GetOrdinal("Field1")).Value;
これはSqlDataReader
エンタープライズ ライブラリ データ アクセス ブロックを使用するようにコードを変換しようとしていますがbyte[]、IDataReader.
私はMSのドキュメントをよく見ましたが、助けになるものは何も見つかりませんでした.
私が最初に試みることは(どこに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があります。