我有这行代码
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