For datamængder som 300k rækker ville jeg glemme EF. Jeg ville gøre dette ved at have en tabel som:
BatchId RowId
Hvor RowId er PK for den række, vi ønsker at opdatere, og BatchId refererer blot til denne "kørsel" af 300.000 rækker (for at tillade flere på én gang osv.).
Jeg ville generere et nyt BatchId (dette kunne være noget unikt - Guide springer til at tænke på) og bruge SqlBulkCopy til at indsætte posterne på denne tabel, dvs.
100034 17
100034 22
...
100034 134556
Jeg ville derefter bruge en simgle sproc til at oprette forbindelse og opdatering (og slette batchen fra tabellen).
SqlBulkCopy er den hurtigste måde at få denne mængde data til serveren på; du vil ikke drukne i rundrejser. EF er objektorienteret:god til mange scenarier - men ikke denne.