private void AddClosingEventHandler(object sender, DialogClosingEventArgs args) { bool result = false; if (Equals(args.Parameter, false)) { return; } if (args.Parameter is TextBox) { args.Cancel(); args.Session.UpdateContent(new PleaseWaitView()); TextBox txtName = (TextBox)args.Parameter; string name = txtName.Text.Trim(); if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name)) { args.Cancel(); args.Session.UpdateContent(new OkMessageDialog() { DataContext = "Null entry" }); return; } var duplicate = _context.PartyLists.FirstOrDefault(c => c.Name == name); if (duplicate != null) { args.Session.UpdateContent(new OkMessageDialog() { DataContext = "Duplicate name" }); return; } Task.Run(() => { var newPartyList = new PartyList() { Name = name }; try { //_context.Entry(newPartyList).State = EntityState.Added; _context.PartyLists.Add(newPartyList); var cplist = _context.CouncilPositions; var cmlist = new List <CouncilMembers>(); foreach (var cp in cplist) { var cm = new CouncilMembers { CouncilPosition = cp, PartyList = newPartyList }; cmlist.Add(cm); } foreach (var entity in cmlist) { //_context.Entry(entity).State = EntityState.Added; _context.CouncilMembers.Add(entity); } _context.SaveChanges(); result = true; } catch (Exception e) { Console.WriteLine(e.Message); result = false; } Thread.Sleep(500); return(newPartyList); }).ContinueWith( (t, _) => { if (result) { PartyLists.Add(t.Result); RaisePropertyChanged(() => PartyLists); args.Session.Close(false); } else { args.Session.UpdateContent(new OkMessageDialog() { DataContext = "Failed to add" }); } }, null, TaskScheduler.FromCurrentSynchronizationContext()); } }