public static EmployerRegistrationViewModel SubmitRegistration(EmployerRegistrationViewModel employerRegistrationViewModel) { using (DbContext context = new DbContext()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { try { employerRegistrationViewModel.EmployerDto = SetPendingFieldsEmployerDto(employerRegistrationViewModel.EmployerDto, employerRegistrationViewModel.EmployerUnitDto); employerRegistrationViewModel.EmployerContactDto = SetPendingFieldsEmployerContactDto(employerRegistrationViewModel.EmployerContactDto); employerRegistrationViewModel.EmployerUnitDto = SetPendingFieldsEmployerUnitDto(employerRegistrationViewModel.EmployerUnitDto, employerRegistrationViewModel.ListAddressLinkDto); employerRegistrationViewModel.ListAddressLinkDto = SetPendingFieldsListAddressLinkDto(employerRegistrationViewModel.ListAddressLinkDto); var employer = Employer.FromDto(context, employerRegistrationViewModel.EmployerDto); var employerUnit = EmployerUnit.FromDto(context, employerRegistrationViewModel.EmployerUnitDto); employer.EmployerContacts.Add(EmployerContact.FromDto(context, employerRegistrationViewModel.EmployerContactDto)); foreach (var addressLinkDto in employerRegistrationViewModel.ListAddressLinkDto) { employerUnit.AddressLinks.Add(AddressLink.FromDto(context, addressLinkDto)); } employer.EmployerUnits.Add(employerUnit); context.SaveChanges(); dbContextTransaction.Commit(); employerRegistrationViewModel.EmployerDto = employer.ToDto(); } catch (Exception) { dbContextTransaction.Rollback(); } } } return(employerRegistrationViewModel); }