Domanda

Qual è il metodo migliore per salvare migliaia di righe e dopo aver fatto qualcosa, aggiornandole.

Attualmente, utilizzo un datatable, compilandolo, quando ho finito di inserire

MyDataAdapter.Update(MyDataTable)

Dopo aver apportato alcune modifiche a MyDataTable, utilizzo nuovamente il metodo MyDataAdapter.Update (MyDataTable).

Modifica

Mi dispiace per non aver fornito ulteriori informazioni.

Possono esserci fino a 200.000 righe che verranno create da un file XML. Le righe verranno salvate nel database. Dopo di che ci sarà qualche processo per ogni riga. E dovrò aggiornare ogni riga nel database.

Invece di aggiornare riga per riga, ho deciso di aggiornare il datatable e di utilizzare lo stesso dataadapter per aggiornare le righe.

Questo è il migliore di me.

Penso che potrebbe esserci un approccio più intelligente.

È stato utile?

Soluzione

In risposta ai tuoi commenti:

Un DataAdapter.Update() aggiornerà (e inserirà / eliminerà) riga per riga. Se hai cambiamenti individuali, non c'è davvero modo più veloce. Se si verificano modifiche sistematiche, come SET Price = Price+ 2 WHERE SelByDate < '1/1/2010' è meglio eseguire un DbCommand rispetto al database.

Ma forse dovresti preoccuparti delle transazioni e della gestione degli errori prima dell'esibizione.

Altri suggerimenti

Se ho capito bene, stai facendo due operazioni separate: caricare le righe in un database e quindi aggiornare quelle righe.

Se le righe che si stanno inserendo provengono da un'altra origine dati supportata da ADO.NET, è possibile utilizzare SqlBulkCopy per inserire le righe in batch, che sarà più efficiente rispetto all'utilizzo di un datatable.

Una volta che le righe sono nel database, suppongo che sarebbe meglio eseguire un comando SQLC per modificarne i valori.

Se puoi fornire maggiori dettagli su cosa - e perché - stai ponendo la domanda, forse possiamo meglio personalizzare una risposta per essa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top