Adicionando um byte [] a um Dataarow
Pergunta
Estou tentando escrever um teste que retorne um leitor de dados com uma das colunas sendo um byte []. Imaginei que posso criar um DataTable e criar um leitor a partir disso.
var cboTable = new DataTable("CBOTable");
var colValue = new SqlBinary(ASCII.GetBytes("Hello This is test"));
cboTable.Columns.Add("ByteArrayColumn");
cboTable.Rows.Add(colValue);
var reader= cboTable.CreateDataReader();
O problema é quando eu adiciono colValue
para o Dataarow em vez de adicioná -lo como um byte[]
Ele adiciona à linha, pois é a representação de string que é "SqlBinary(18)"
.
Minha pergunta é como adicionar um real byte[]
para o meu Dataarow
Solução
De acordo com Msdn:
Se você estiver criando um Datatable programaticamente, deve primeiro definir seu esquema adicionando objetos de datacolumn ao DataColumnCollection (acessado através da propriedade Columns). Para obter mais informações sobre como adicionar objetos de datacolumn, consulte Adicionando colunas a um Datatable (ADO.NET).
Por escrito cboTable.Columns.Add("ByteArrayColumn");
, você definiu um nome de coluna, mas não recebeu um tipo, por isso é padrão ser uma coluna "String". Você deve seguir o exemplo no documento para criar o esquema da tabela antes de adicionar dados à tabela.