private void Save() { if (Student != null) { if (!String.IsNullOrEmpty(Student.FIO) && !String.IsNullOrEmpty(Student.Phone) && !String.IsNullOrEmpty(Student.Email) && IsMale != null) { for (int i = 0; i < Student.StudentHabitations.Count; i++) { var hh = DbContext.StudentHabitations.Find(Student.StudentHabitations[i].Id); if (hh != null) { DbContext.StudentHabitations.Remove(hh); } } for (int i = 0; i < Student.StudentInformations.Count; i++) { var ii = DbContext.StudentInformations.Find(Student.StudentInformations[i].Id); if (ii != null) { DbContext.StudentInformations.Remove(ii); } } DbContext.DetectAndSaveChanges(); var checkedHab = Habitations.Where(x => x.IsChecked).ToList(); foreach (var hab in checkedHab) { DbContext.StudentHabitations.Add(new StudentHabitation { HabitationId = hab.Id, StudentId = Student.Id }); DbContext.DetectAndSaveChanges(); } var checkedInf = Informations.Where(x => x.IsChecked).ToList(); foreach (var inf in checkedInf) { DbContext.StudentInformations.Add(new StudentInformation { InformationId = inf.Id, StudentId = Student.Id }); DbContext.DetectAndSaveChanges(); } Student.GenderId = (bool)IsMale ? Gender.Male.Id : Gender.Female.Id; DbContext.Entry(Student).State = System.Data.Entity.EntityState.Modified; DbContext.DetectAndSaveChanges(); } else { MessageBox.Show("Недостаточно данных для сохранения!"); } } }