protected void ExcelImportWizard_FinishButtonClick(object sender, WizardNavigationEventArgs e) { if (!CustomValidatorValidateMapping.IsValid) { return; } string appendMode = ViewState["AppendMode"].ToString(); Dictionary <string, string> columnMapping = new Dictionary <string, string>(); foreach (GridViewRow row in dgvColumns.Rows) { string excelColumn = row.Cells[0].Text; string dbColumn = (row.Cells[1].Controls[1] as DropDownList).SelectedValue; if (dbColumn.Equals(ExcelUtils.IGNORE_COLUMN_VALUE, StringComparison.CurrentCultureIgnoreCase)) { continue; } columnMapping.Add(dbColumn, excelColumn); } MemoryStream stream = new MemoryStream(ViewState["Stream"] as byte[]); DataTable dt; using (ExcelPackage spreadSheetDocument = new ExcelPackage(stream)) { dt = ExcelUtils.GetDataTableFromExcel(spreadSheetDocument, true); } using (InteractiveKeyEntities context = new InteractiveKeyEntities()) { if (appendMode == "Overwrite") { foreach (var sp in context.Species) { sp.CharacterStates.Clear(); context.Species.Remove(sp); } foreach (var cs in context.CharacterStates) { cs.DisabledCharacters.Clear(); } foreach (var st in context.CharacterStates) { context.CharacterStates.Remove(st); } foreach (var ch in context.Characters) { context.Characters.Remove(ch); } foreach (var cat in context.CharacterCategories) { context.CharacterCategories.Remove(cat); } context.SaveChanges(); } foreach (DataRow dataRow in dt.Rows) { string categoryName = ExcelUtils.GetExcelRowValueForColumn(dataRow, FriendlyColumnNames.CategoryName, columnMapping).ToString(); string characterCode = ExcelUtils.GetExcelRowValueForColumn(dataRow, FriendlyColumnNames.CharacterCode, columnMapping).ToString(); string characterDesc = ExcelUtils.GetExcelRowValueForColumn(dataRow, FriendlyColumnNames.CharacterDescription, columnMapping).ToString(); string stateCode = ExcelUtils.GetExcelRowValueForColumn(dataRow, FriendlyColumnNames.CharacterStateCode, columnMapping).ToString(); string stateDesc = ExcelUtils.GetExcelRowValueForColumn(dataRow, FriendlyColumnNames.CharacterStateDescription, columnMapping).ToString(); CharacterCategory cat = context.CharacterCategories.SingleOrDefault(i => i.CategoryName == categoryName); if (cat == null) { cat = context.CharacterCategories.Create(); cat.AssignNewdCharacterCategoryId(context); cat.CategoryName = categoryName; context.CharacterCategories.Add(cat); } Character cha = context.Characters.SingleOrDefault(i => i.CharacterCode == characterCode); if (cha == null) { cha = context.Characters.Create(); cha.AssignNewdCharacterId(context); cha.CharacterCode = characterCode; cha.CharacterDescription = characterDesc; cat.Characters.Add(cha); CharacterState st = context.CharacterStates.Create(); st.AssignNewCharacterStateId(context); st.CharacterStateCode = stateCode; st.CharacterStateDescription = stateDesc; cha.CharacterStates.Add(st); } else { CharacterState st = context.CharacterStates.SingleOrDefault(i => i.CharacterStateCode == characterCode); if (st == null) { st = context.CharacterStates.Create(); st.AssignNewCharacterStateId(context); st.CharacterStateCode = stateCode; st.CharacterStateDescription = stateDesc; cha.CharacterStates.Add(st); } } context.SaveChanges(); } context.SaveChanges(); } }