Either use Batching
Or use System.Data.SqlClient.SqlBulkCopy
Example:
            List<IEntityPropertyProjector> entityCollectionProjection = EntityFields2.ConvertToProjectors(collectionToSave[0].Fields);
            var result = new DataTable();
            collectionToSave.DefaultView.CreateProjection(entityCollectionProjection, result);
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(new DataAccessAdapter().ConnectionString))
            {
                bulkCopy.BulkCopyTimeout = 240;
                bulkCopy.DestinationTableName = "dbo.Products";
                try
                {
                    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("ProductCode", "ProductCode"));
                    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Actual", "Actual"));
                    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Target", "Target"));
                    bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("Date", "Date"));
                    bulkCopy.WriteToServer(result);
               }