Reutilizando conjuntos de dados no .NET
-
22-09-2019 - |
Pergunta
É uma boa ideia reutilizar um conjunto de dados no .NET? O que quero dizer é ... eu tenho o seguinte código que loops a Gridview
For Each row in GridView
ds = New DataSet
ds.ReadXML(GetStream(row.Field))
... export the dataset
Next
O que estou fazendo no loop é criar uma nova instância do conjunto de dados. Não posso simplesmente ligar para ds.clear () e depois reutilizá -lo através do ds.readxml ()?
Solução
A semântica é diferente: DataSet.Clear
Exclui todos os dados (linhas), mas mantém o esquema (tabelas e relações).
Na sua amostra, parece que as tabelas estão sendo criadas a partir do método readxml (que pode ler o esquema e os dados).
DataSet.Clear
provavelmente funcionaria enquanto você tiver certeza de que todos os documentos XML têm o mesmo esquema, mas usando New
é mais robusto e expressa sua intenção melhor.
No entanto, se você estava lendo apenas dados, como na amostra a seguir, DataSet.Clear
Pode ser uma escolha melhor, pois evita que você gera repetidamente o esquema.
ds = New DataSet
... code to create the schema (Tables, Columns, Relations)
For Each row in GridView
ds.ReadXML(GetStream(row.Field), XmlReadMode.IgnoreSchema)
... export the dataset
ds.Clear
Next
Outras dicas
Você pesa a reutilização com outras considerações de desempenho. De um modo geral, não faço otimizações como essa até que se tornem necessárias. E então somente se eu tiver números para provar que é necessário.
Você pode fazer isso, mas a criação de objetos é tão barata e você não tem risco de efeitos colaterais, não há motivo para não criar o novo objeto.