C# 使用microsoft企业库获取sql varbinary记录

C# 使用microsoft企业库获取sql varbinary记录,c#,sql,varbinary,C#,Sql,Varbinary,我有这行代码 byte[] field1 = (reader.GetSqlBinary(reader.GetOrdinal("Field1")).Value; 这是一个SqlDataReader 我正在尝试将代码转换为使用企业库数据访问块,但不知道如何使用IDataReader获取byte[] 我仔细查看了MS文档,但没有找到任何有用的东西。我要尝试的第一件事是(其中I是reader.GetOrdinal(“Field1”)): 如果失败,也许: byte[] secondTry; using

我有这行代码

byte[] field1 = (reader.GetSqlBinary(reader.GetOrdinal("Field1")).Value;
这是一个
SqlDataReader

我正在尝试将代码转换为使用企业库数据访问块,但不知道如何使用
IDataReader
获取
byte[]


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

我要尝试的第一件事是(其中
I
reader.GetOrdinal(“Field1”)
):

如果失败,也许:

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

+1感谢标记。“第一件事”起了作用。看着它,我真不敢相信我没有那样做。联赛显然正在生效。是时候关闭visual studio并使用spotify了@马特-我很高兴第一步奏效-我错过了第二步的关键一步;为了“长尾”的好处,p现在固定了。
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();
}