Tabela de dados vs Dataset

votos
104

Eu uso atualmente um DataTable para obter resultados de um banco de dados que eu posso usar no meu código.

No entanto, muitos exemplo no show web usando um DataSet em vez e acessar a tabela (s) através do método de coleções.

sábio ou não há qualquer vantagem, o desempenho do uso de conjuntos de dados ou tabelas de dados como um método de armazenamento de resultados SQL?

Publicado 05/08/2008 em 14:07
fonte usuário
Em outras línguas...                            


6 respostas

votos
82

É realmente depende do tipo de dados que você está trazendo de volta. Uma vez que um DataSet é (em vigor) apenas uma coleção de objetos DataTable, você pode retornar vários conjuntos distintos de dados em um único e, portanto, mais gerenciável, objeto.

Em termos de performance, você é mais provável conseguir ineficiência de consultas não otimizados que desde a escolha "errada" de construção .NET. Pelo menos, essa tem sido a minha experiência.

Respondeu 05/08/2008 em 14:12
fonte usuário

votos
19

Uma diferença importante é que conjuntos de dados podem conter várias tabelas e você pode definir as relações entre essas tabelas.

Se você está apenas retornando um único conjunto embora eu acho que um DataTable seria mais otimizado resultado. Eu acho que tem que haver alguma sobrecarga (concedido pequeno) para oferecer a funcionalidade de um DataSet faz e manter o controle de várias tabelas de dados.

Respondeu 14/09/2008 em 04:07
fonte usuário

votos
6

em 1.x costumava haver coisas DataTables não poderia fazer o que DataSets poderia (não me lembro exatamente o que). Tudo o que foi mudado em 2.x. Meu palpite é que é por isso que um monte de exemplos ainda usam conjuntos de dados. DataTables deve ser mais rápido porque são mais leves. Se você só está puxando um único conjunto de resultados, é sua melhor escolha entre os dois.

Respondeu 05/08/2008 em 14:10
fonte usuário

votos
5

Uma característica do DataSet é que se pode chamar várias instruções select em seus procedimentos armazenados, o DataSet terá um DataTable para cada um.

Respondeu 05/08/2008 em 14:15
fonte usuário

votos
3

Existem algumas otimizações que você pode usar ao preencher um DataTable, como chamar BeginLoadData (), inserindo os dados, em seguida, chamar EndLoadData (). Isto desliga algum comportamento interno dentro do DataTable, tais como a manutenção do índice, etc. Consulte este artigo para obter mais detalhes.

Respondeu 14/09/2008 em 03:55
fonte usuário

votos
0

Quando você está lidando apenas com uma única tabela de qualquer maneira, a maior diferença prática que tenho encontrado é que DataSet tem um método "HasChanges", mas DataTable não. Ambos têm um "GetChanges", no entanto, para que você possa usar isso e teste para nulo.

Respondeu 05/12/2016 em 15:50
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more