Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Recommander l'utilisation de la table temporaire ou de la variable de table dans Entity Framework 4. Mettre à jour le framework d'entité de performance

Pour des volumes de données comme 300 000 lignes, j'oublierais EF. Je ferais cela en ayant un tableau tel que :

BatchId  RowId

Où RowId est le PK de la ligne que nous voulons mettre à jour, et BatchId se réfère simplement à cette "série" de 300 000 lignes (pour en autoriser plusieurs à la fois, etc.).

Je générerais un nouveau BatchId (cela pourrait être quelque chose d'unique - Guid me vient à l'esprit), et utiliserais SqlBulkCopy pour insérer les enregistrements dans cette table, c'est-à-dire

100034   17
100034   22
...
100034   134556

J'utiliserais alors un simgle sproc pour faire la jointure et la mise à jour (et supprimer le lot de la table).

SqlBulkCopy est le moyen le plus rapide d'acheminer ce volume de données vers le serveur ; vous ne vous noierez pas dans les allers-retours. EF est orienté objet :idéal pour de nombreux scénarios - mais pas celui-ci.