private Data.V2.CoreContext addToContext(Data.V2.CoreContext context, Domain2.Integrations.Catalyst.HasDataEntry entity, int count, int commitCount, bool recreateContext) { //https://stackoverflow.com/questions/5940225/fastest-way-of-inserting-in-entity-framework context.Set <Domain2.Integrations.Catalyst.HasDataEntry>().Add(entity); if (count % commitCount == 0) { context.SaveChanges(); if (recreateContext) { context.Dispose(); context = new Data.V2.CoreContext(); context.Configuration.AutoDetectChangesEnabled = false; } } return(context); }
public void Import() { var table = getTableFromExcel(); // do this differently if we ever get real volume... _context.CatalystHasDataEntries.RemoveRange(_context.CatalystHasDataEntries); _context.SaveChanges(); table.Rows.Remove(table.Rows[0]); // blank row var dateRow = table.Rows[0]; int colCount = table.Columns.Count; int count = 0; for (int i = 1; i < table.Rows.Count - 1; i++) { string studentName = table.Rows[i][0].ToString(); for (int j = 1; j < colCount - 1; j++) { DateTime d = getDateFromRawValue(dateRow[j].ToString()); var initials = table.Rows[i][j].ToString(); if (!string.IsNullOrWhiteSpace(initials.Trim())) { count++; var item = new Domain2.Integrations.Catalyst.HasDataEntry(); item.Name = studentName; item.ProviderInitialsSet = initials.Trim(); item.Date = d; _context = addToContext(_context, item, count, 100, true); } } } _context.SaveChanges(); }