Entity Frameworks 6 is great for most things, but for bulk inserts or updates it is very slow (this has been improved in Entity Frameworks Core). There are some good workarounds available for deleting and recreating the data context every 100 updates, and that greatly improves the performance, but for hundreds of thousands of rows, it is still too slow. SqlBulkCopy() is very fast for these large insert or update batch operations.
First convert a list of objects to a datatable by adding a row in the datatable for each object in the list and adding a column in the datatable for each of the object's properties, then copy the data from the list to the datatable.
Then, open a connection to the database and create a temporary table to hold the datatable's data.