private bool SaveMarks() { try { using (PriemEntities context = new PriemEntities()) { using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew)) { string mark = null; for (int i = 0; i < dgvMarks.Rows.Count; i++) { int persNum = int.Parse(dgvMarks["Номер", i].Value.ToString()); Guid persId = new Guid(dgvMarks["PersonId", i].Value.ToString()); if (dgvMarks["Баллы", i].Value != null) { mark = dgvMarks["Баллы", i].Value.ToString().Trim(); } int?updatedMark; int mrk; if (string.IsNullOrEmpty(mark)) { updatedMark = null; } else if (int.TryParse(mark, out mrk) && mrk >= 0 && mrk < 101) { updatedMark = mrk; } else { dgvMarks.CurrentCell = dgvMarks["Баллы", i]; WinFormsServ.Error(dgvMarks["Номер", i].Value.ToString() + ": неправильно введены данные"); return(false); } if (_isOral) { context.ExamsVedHistory_UpdateMarkOral(_vedId, persId, persNum, updatedMark); } else { context.ExamsVedHistory_UpdateMark(_vedId, persId, persNum, updatedMark); } } transaction.Complete(); return(true); } } } catch (Exception exc) { WinFormsServ.Error("Ошибка сохранения данных: \n" + exc.Message); return(false); } }