Stiamo cercando di aggiornare i record 20000 in single commit, che richiede più di 30 minuti. Stiamo pensando di ridurre i conteggi dei record e implementare il processo batch che impegna i 1000 record. Qualcuno può fornire il suggerimento per migliorare le prestazioni?
Per impostazione predefinita, EF esegue 1 query per singolo aggiornamento. È possibile scrivere stored procedure accettando un parametro con valori di tabella, quindi aggiornando più righe con una singola query, riducendo il sovraccarico di andata e ritorno. Anche per gli inserimenti di massa è possibile utilizzare la classe SqlBulkCopy
.
Aggiornamento : in alternativa è possibile utilizzare librerie di terze parti per farlo. Qualcosa come https://entityframework-plus.net/?z=ef-extended e https://entityframework-extensions.net/ Ho anche utilizzato un semplice wrapper su SqlBulkCopy per gli inserimenti di massa.
Update2 : esempio di Microsoft su come utilizzare i parametri di tabella valori: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/table-valued-parameters che è per ADO.Net, ma simile l'approccio è possibile con EF.