Voor datavolumes zoals 300.000 rijen zou ik EF vergeten. Ik zou dit doen door een tabel te hebben zoals:
BatchId RowId
Waar RowId de PK is van de rij die we willen updaten, en BatchId verwijst alleen naar deze "run" van 300k rijen (om meerdere tegelijk toe te staan, enz.).
Ik zou een nieuwe BatchId genereren (dit kan van alles zijn -Guid komt voor de geest), en SqlBulkCopy gebruiken om de records in deze tabel in te voegen, d.w.z.
100034 17
100034 22
...
100034 134556
Ik zou dan een simpele sproc gebruiken om de join en update uit te voeren (en de batch van de tabel te verwijderen).
SqlBulkCopy is de snelste manier om deze hoeveelheid gegevens naar de server te krijgen; je zult niet verdrinken in rondreizen. EF is objectgeoriënteerd:leuk voor veel scenario's - maar niet deze.