2

我有这行代码

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

这是一个SqlDataReader

我正在尝试将代码转换为使用企业库数据访问块,但无法弄清楚如何byte[]使用IDataReader.

我仔细查看了 MS 文档,但没有找到任何有用的东西。

4

1 回答 1

2

我会尝试的第一件事是(在哪里ireader.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

于 2010-07-31T19:43:01.920 回答