Pergunta

Qual é o melhor método para salvar milhares de linhas e depois de fazer alguma coisa, atualizando -as.

Atualmente, eu uso um datatable, preenchendo -o, quando feito a inserção por

MyDataAdapter.Update(MyDataTable)

Depois de fazer alguma mudança no mydatatable, usei novamente o método myDataadapter.Update (myDatatable).

Editar:

Lamento não fornecer mais informações.

Pode haver até 200.000 linhas que serão criadas a partir de um arquivo XML. Lá linhas serão salvas no banco de dados. Depois do que haverá algum processo para cada linha. E vou precisar atualizar cada linha no banco de dados.

Em vez de atualizar a linha por linha, decidi atualizar o DataTable e usar o mesmo DataAdapter para atualizar as linhas.

Este é o melhor de mim.

Eu acho que pode haver uma abordagem mais inteligente.

Foi útil?

Solução

Ao reagir aos seus comentários:

Um DataAdapter.Update() UDATE (e inserirá/excluirá) linha por linha. Se você tiver mudanças individuais, realmente não há uma maneira mais rápida. Se você tem mudanças sistemáticas, como SET Price = Price+ 2 WHERE SelByDate < '1/1/2010' você é melhor ao executar um DbCommand contra o banco de dados.

Mas talvez você deva se preocupar com transações e manuseio de erros antes do desempenho.

Outras dicas

Se eu entendo corretamente, você está fazendo duas operações separadas: carregando linhas em um banco de dados e atualizando essas linhas.

Se as linhas que você estiver inserindo vier de outra fonte de dados suportada pelo ADO.NET, poderá usar o sqlbulkcopy para inserir as linhas em lotes, que serão mais eficientes do que usar um DataTable.

Uma vez que as linhas estiverem no banco de dados, eu presumo que você seria melhor executar um SQLCommand para modificar seus valores.

Se você pode fornecer mais detalhes sobre o que-e por que-você está fazendo a pergunta, talvez possamos adaptar melhor uma resposta para isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top