void DeleteStudent() { if (!HasWritePrivilage()) { return; } if (MessageBox.Show("Czy na pewno chcesz usunąć wskazanego ucznia?\nPotwierdzenie tej operacji spowoduje usunięcie ucznia z bazy danych oraz wszystkich danych z nim powiązanych (przydziały ucznia do oddziałów klasowych we wszystkich okresach, jego nieobecności na zajęciach oraz wszystkie oceny przedmiotowe z całego okresu kształcenia)!", Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { try { var recordCount = 0; var sqlParamWithValue = new HashSet <Tuple <string, object> >(); foreach (StudentAllocation S in olvStudent.SelectedObjects) { if (!HasWritePrivilage(S.StudentClass.ID)) { continue; } sqlParamWithValue.Add(new Tuple <string, object>("@ID", S.Student.ID)); } using (var scope = AppSession.TypeContainer.BeginLifetimeScope()) { var dbs = scope.Resolve <IDataBaseService>(); recordCount = dbs.RemoveManyRecordsAsync(StudentSQL.DeleteStudent(), sqlParamWithValue).Result; } MessageBox.Show($"{recordCount} rekordów zostało usuniętych.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); RefreshData(); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } }