You can use SqlBulkCopy, even you can insert more 10k records within few seconds. Check below link with examples. Even you can use batch.
string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.Customers";
// Set the BatchSize.
sqlBulkCopy.BatchSize = 100;
//[OPTIONAL]: Map the DataTable columns with that of the database table
sqlBulkCopy.ColumnMappings.Add("Id", "CustomerId");
sqlBulkCopy.ColumnMappings.Add("Name", "Name");
sqlBulkCopy.ColumnMappings.Add("Country", "Country");
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
https://stackoverflow.com/questions/13722014/insert-2-million-rows-into-sql-server-quickly
https://visualstudiomagazine.com/articles/2013/03/01/effective-use-of-sql-bulk-insert.aspx