protected void linkSave_Click(object sender, EventArgs e) { var raceId = Convert.ToInt32(hiddenRaceID.Value); var fleetId = Convert.ToInt32(listFleet.SelectedValue); var ctx = new SailTallyDataContext(); // Delete the existing scores var scoredBoats = from s in ctx.SS_Scores join b in ctx.SS_Boats on s.BoatID equals b.BoatID where s.RaceID == raceId && b.FleetID == fleetId select s; var raceFleets = from rf in ctx.SS_RaceFleets where rf.RaceID == raceId && rf.FleetID == fleetId select rf; ctx.SS_Scores.DeleteAllOnSubmit(scoredBoats); ctx.SS_RaceFleets.DeleteAllOnSubmit(raceFleets); ctx.SubmitChanges(); // Save the scores var raceFleet = new SS_RaceFleet { RaceID = raceId, FleetID = fleetId, IsAbandoned = checkAbandoned.Checked, Course = textCourse.Text, Distance = CentralLibrary.ConvertToDouble(textDistance.Text, 0), DistanceUnits = textDistanceUnits.Text }; ctx.SS_RaceFleets.InsertOnSubmit(raceFleet); // ReSharper disable once LoopCanBePartlyConvertedToQuery foreach (var boatScore in _boatScores) { var score = new SS_Score { RaceID = raceId, BoatID = boatScore.BoatId, PenaltyID = boatScore.PenaltyId, FinishPlace = boatScore.FinishPosition }; ctx.SS_Scores.InsertOnSubmit(score); } ctx.SubmitChanges(); ShowDetail(true); ShowRaces(); }