U objemů dat jako 300k řádků bych na EF zapomněl. Udělal bych to tak, že bych měl tabulku jako:
BatchId RowId
Kde RowId je PK řádku, který chceme aktualizovat, a BatchId pouze odkazuje na tento „běh“ 300 000 řádků (pro umožnění více najednou atd.).
Vygeneroval bych nové BatchId (může to být cokoli jedinečného - Průvodce mi vyskočí na mysl) a pomocí SqlBulkCopy vložím záznamy do této tabulky, tj.
100034 17
100034 22
...
100034 134556
K připojení a aktualizaci (a odstranění dávky z tabulky) bych pak použil jednoduchý sproc.
SqlBulkCopy je nejrychlejší způsob, jak dostat tento objem dat na server; ve zpátečních cestách se neutopíte. EF je objektově orientovaný:vhodný pro mnoho scénářů – ale ne tento.