Я использую Entity Framework и MVC C # для извлечения данных из файла Excel в таблицу SQL. Проблема в том, что я перебираю около семидесяти тысяч записей, поэтому я хотел бы знать, как я могу ускорить процесс.Я не думаю, что мой цикл for достаточно умен, так как в нем слишком много строк кода, и, возможно, именно поэтому обработка идет медленно.Я уверен, что есть более умный и быстрый способ.Я вставил свой для каждой петли ниже
public ActionResult Upload(FormCollection formCollection)
{
var usersList = new List<marketingdbclients_tempDataTable>();
if (Request != null)
{
HttpPostedFileBase file = Request.Files["UploadedFile"];
if ((file != null) && (file.ContentLength > 0) && !string.IsNullOrEmpty(file.FileName))
{
string fileName = file.FileName;
string fileContentType = file.ContentType;
byte[] fileBytes = new byte[file.ContentLength];
var data = file.InputStream.Read(fileBytes, 0, Convert.ToInt32(file.ContentLength));
using (var package = new ExcelPackage(file.InputStream))
{
var currentSheet = package.Workbook.Worksheets;
var workSheet = currentSheet.First();
var noOfCol = workSheet.Dimension.End.Column;
var noOfRow = workSheet.Dimension.End.Row;
for (int rowIterator = 2; rowIterator <= noOfRow; rowIterator++)
{
var user = new marketingdbclients_tempDataTable();
user.FirstName = ConvertToString(workSheet.Cells[rowIterator, 2].Value);
user.MiddleName = ConvertToString(workSheet.Cells[rowIterator, 3].Value);
user.LastName = ConvertToString(workSheet.Cells[rowIterator, 4].Value);
//user.
user.RaceId = ConvertToString(workSheet.Cells[rowIterator, 6].Value);
user.DateOfBirth = ConvertToString(workSheet.Cells[rowIterator, 7].Value);
user.Age = ConvertToString(workSheet.Cells[rowIterator, 8].Value);
user.TitleTypeId = ConvertToString(workSheet.Cells[rowIterator, 9].Value);
user.Nationality = ConvertToString(workSheet.Cells[rowIterator, 10].Value);
user.PhysicalCountry = ConvertToString(workSheet.Cells[rowIterator, 11].Value);
user.PhysicalProvince = ConvertToString(workSheet.Cells[rowIterator, 12].Value);
user.PhysicalCity = ConvertToString(workSheet.Cells[rowIterator, 13].Value);
user.Area = ConvertToString(workSheet.Cells[rowIterator, 14].Value);
user.HighestQualification = ConvertToString(workSheet.Cells[rowIterator, 15].Value);
user.CurrentQualification = ConvertToString(workSheet.Cells[rowIterator, 16].Value);
user.PhysicalAddress = ConvertToString(workSheet.Cells[rowIterator, 17].Value);
user.Cell1 = ConvertToString(workSheet.Cells[rowIterator, 18].Value);
user.Cell2 = ConvertToString(workSheet.Cells[rowIterator, 19].Value);
user.Cell3 = ConvertToString(workSheet.Cells[rowIterator, 20].Value);
user.Cell4 = ConvertToString(workSheet.Cells[rowIterator, 21].Value);
user.Work1 = ConvertToString(workSheet.Cells[rowIterator, 22].Value);
user.Work2 = ConvertToString(workSheet.Cells[rowIterator, 23].Value);
user.Work3 = ConvertToString(workSheet.Cells[rowIterator, 24].Value);
user.Work4 = ConvertToString(workSheet.Cells[rowIterator, 25].Value);
user.Home1 = ConvertToString(workSheet.Cells[rowIterator, 26].Value);
user.Home2 = ConvertToString(workSheet.Cells[rowIterator, 27].Value);
user.Home3 = ConvertToString(workSheet.Cells[rowIterator, 28].Value); ;
user.Home4 = ConvertToString(workSheet.Cells[rowIterator, 29].Value);
user.LSMGroup = ConvertToString(workSheet.Cells[rowIterator, 30].Value);
user.Municipality = ConvertToString(workSheet.Cells[rowIterator, 31].Value);
user.Crediting_Rating = ConvertToString(workSheet.Cells[rowIterator, 32].Value);
user.Email1 = ConvertToString(workSheet.Cells[rowIterator, 33].Value);
user.Email2 = ConvertToString(workSheet.Cells[rowIterator, 34].Value);
user.Email3 = ConvertToString(workSheet.Cells[rowIterator, 35].Value);
user.Email4 = ConvertToString(workSheet.Cells[rowIterator, 36].Value);
user.Income = ConvertToString(workSheet.Cells[rowIterator, 35].Value);
user.Company = ConvertToString(workSheet.Cells[rowIterator, 36].Value);
user.Industry = ConvertToString(workSheet.Cells[rowIterator, 37].Value);
user.JobTitle = ConvertToString(workSheet.Cells[rowIterator, 38].Value);
user.LeadStage = ConvertToString(workSheet.Cells[rowIterator, 39].Value);
user.ReggieNumber = ConvertToString(workSheet.Cells[rowIterator, 40].Value);
user.Source = ConvertToString(workSheet.Cells[rowIterator, 41].Value);
//user.SNo = Convert.ToInt32(workSheet.Cells[rowIterator, 1].Value);
//user.Name = workSheet.Cells[rowIterator, 2].Value.ToString();
//user.Age = Convert.ToInt32(workSheet.Cells[rowIterator, 3].Value);
usersList.Add(user);
}
}
}
}
//MarketingDBEntitiesModel db = new MarketingDBEntitiesModel();
using (MarketingDBEntitiesModel excelImportDBEntities = new MarketingDBEntitiesModel())
{
foreach (var item in usersList)
{
excelImportDBEntities.marketingdbclients_tempDataTable.Add(item);
}
excelImportDBEntities.SaveChanges();
}
return View("Index");
}
public string ConvertToString(object value)
{
try
{
return value.ToString();
}
catch
{
return "Null";
}
}