Untuk volume data seperti 300 ribu baris, saya akan melupakan EF. Saya akan melakukan ini dengan memiliki tabel seperti:
BatchId RowId
Di mana RowId adalah PK dari baris yang ingin kami perbarui, dan BatchId hanya mengacu pada "run" dari 300 ribu baris ini (untuk memungkinkan beberapa sekaligus, dll).
Saya akan menghasilkan BatchId baru (ini bisa berupa sesuatu yang unik -Guid melompat ke pikiran), dan menggunakan SqlBulkCopy untuk memasukkan catatan te ke tabel ini, yaitu
100034 17
100034 22
...
100034 134556
Saya kemudian akan menggunakan sproc simgle untuk melakukan join dan update (dan menghapus batch dari tabel).
SqlBulkCopy adalah cara tercepat untuk mendapatkan volume data ini ke server; Anda tidak akan tenggelam dalam perjalanan pulang pergi. EF berorientasi objek :bagus untuk banyak skenario - tapi tidak untuk skenario ini.