public void saveChanges() { using (var db = new RadioPlayer()) { tbl_track track = null; if (!this._isCreateMode) { var id = Convert.ToInt32(this.txtID.Text); track = db.tbl_track.Where(t => t.track_id == id).FirstOrDefault(); if (track == null) { this._mainInterface.statusText = $"ERROR: ID '{this.txtID.Text}' does not exist."; return; } } else { track = new tbl_track(); } track.title = this.txtTitle.Text; track.subtitle = this.txtSubtitle.Text; track.bitrate = this.txtBitrate.Text; track.publisher = this.txtPublisher.Text; track.parental_advisory = (bool)this.checkboxPAL.IsChecked; track.folder_path = this.txtFolder.Text; track.file_name = this.txtFileName.Text; track.duration = Convert.ToInt32(this.txtDuration.Text); track.format_id = ((tbl_format)this.selectorFormat.item).format_id; track.filesize = Convert.ToInt64(this.txtFileSize.Text); track.date_recorded = this.dateRecorded.SelectedDate; track.date_released = this.dateReleased.SelectedDate; track.likes = Convert.ToInt32(this.txtLikes.Text); track.dislikes = Convert.ToInt32(this.txtDislikes.Text); track.artists = this.stringifyList(this.listArtists); track.composers = this.stringifyList(this.listComposers); track.keywords = this.stringifyList(this.listKeywords); // Sort out the genre mappings. List <tbl_genremap> genresToUnmap; List <tbl_genre> genresToMap; IEditorHelper.getMappings <tbl_genremap, tbl_genre>( out genresToUnmap, out genresToMap, this.listGenres.items.Select(i => i as tbl_genre), track.tbl_genremap, (map, value) => map.genre_id == value.genre_id ); foreach (var toUnmap in genresToUnmap) { db.tbl_genremap.Remove(toUnmap); } foreach (var toMap in genresToMap) { tbl_genremap map = new tbl_genremap(); map.tbl_track = track; map.tbl_genre = toMap; db.tbl_genremap.Add(map); } // Sort out the mood mappings. List <tbl_moodmap> moodsToUnmap; List <tbl_mood> moodsToMap; IEditorHelper.getMappings <tbl_moodmap, tbl_mood>( out moodsToUnmap, out moodsToMap, this.listMoods.items.Select(i => i as tbl_mood), track.tbl_moodmap, (map, value) => map.mood_id == value.mood_id ); foreach (var toUnmap in moodsToUnmap) { db.tbl_moodmap.Remove(toUnmap); } foreach (var toMap in moodsToMap) { tbl_moodmap map = new tbl_moodmap(); map.tbl_track = track; map.tbl_mood = toMap; db.tbl_moodmap.Add(map); } if (this._isCreateMode) { db.tbl_track.Add(track); } db.SaveChanges(); } }