public bool AddTicket(Ticket ticket) { using (var transaction = _context.Database.BeginTransaction()) { try { var locations = ticket.Locations; var relatedPeoples = ticket.RelatedPeoples; Add(ticket); _context.SaveChanges(); foreach (var relatedPeople in relatedPeoples) { relatedPeople.TicketId = ticket.Id; _relatedPeopleServices.Add(relatedPeople); _context.SaveChanges(); } foreach (var location in locations) { location.TicketId = ticket.Id; _locationServices.Add(location); _context.SaveChanges(); foreach (var participant in location.Participants) { participant.LocationId = location.Id; _participantServices.Add(participant); } } _context.SaveChanges(); transaction.Commit(); return(true); } catch (Exception error) { transaction.Rollback(); Console.WriteLine(error); return(false); } } }