private void TryUpdateFavorite(IFavorite favorite, List <IGroup> newGroups) { using (Database database = DatabaseConnections.CreateInstance()) { var toUpdate = favorite as DbFavorite; database.Cache.AttachFavorite(toUpdate); List <IGroup> addedGroups = database.AddToDatabase(newGroups); // commit newly created groups, otherwise we cant add into them database.SaveImmediatelyIfRequested(); UpdateGroupsMembership(favorite, newGroups); database.SaveImmediatelyIfRequested(); this.dispatcher.ReportGroupsAdded(addedGroups); this.TrySaveAndReportFavoriteUpdate(toUpdate, database); } }