Pessoal, temos um sistema que tem classes de acesso a banco, ou seja, sempre que precisamos fazer uma busca e trazer o resultado dessa consulta usamos uma chamada 'ConsultaReader(sql)',
que traz um SqlDataReader com a consulta.
Usamos pelo projeto todo, todas as consultas.
Porém, precisamos integrar um webservice que retorna um arquivo xml.
Que poderíamos fazer assim:
DataSet ds = new DataSet();
//traz xml na memória
xml = WebService.GetDados(hash, query);
//descompacta o xml (vem compactado)
xml = Descompacta(xml);
//grava o xml no disco
string dsxml = "C:\\Logs\\data.xml";
File.WriteAllText(dsxml, xml);
//Lê o XML
ds.ReadXml(dsxml);
//deleta o arquivo
File.Delete(dsxml);
//Retorna dataset
return ds;
Minhas duas dúvidas:
1 - Como queremos manter compatibilidade com todo o sistema, precisava entregar como tipo 'SqlDataReader' para manter compatibilidade com todo o sistema legado (ou seja, iriamos tratar como um banco de dados,
não como um webservice), existiria uma forma dessa conversão em um retorno 'SqlDataReader'?
2 - Existe alguma forma de não precisar gravar em memória o xml e retornar como 'SqlDataReader'?
Eu tentei 'desserializar' da seguinte forma:
var dados = Descompacta(xml);
SqlDataReader Dr = (SqlDataReader)new XmlSerializer(typeof(SqlDataReader)).Deserialize(new StringReader(dados));
Mas, não funcionou!
Uma luz?