Удаление существующих строк Entity framework не работает. Он отправляет обратно ошибку проверки сущности
Обновление/редактирование работает отлично, но когда я удаляю одну из строк в модели, чтобы отправить ее обратно в БД, она продолжает читать ошибку "ошибка проверки сущности". Почему это так?
public void UpdateReportGroup(TReportHeaderModel model) { if (model.THeaderTitle == null) { throw new Exception("Report Group Title must be filled in"); } if (model.THeaderTitle.Length <= 0) { throw new Exception("A Report Group Title must be filled in."); } using (var connection = new TReportEntitiesConnection()) { var existingParent = connection.THeaders .Include("TReports") .Where(p => p.ID == model.ID) .SingleOrDefault(); if (existingParent != null) { //update parent report group connection.Entry(existingParent).CurrentValues.SetValues(model); //delete children reports foreach (var existingChild in existingParent.TReports.ToList()) { if (!model.TReports.Any(c => c.ID == existingChild.ID)) { connection.TReport.Remove(existingChild); } } foreach (var childModel in model.TReports) { var existingChilds = existingParent.TReports .Where(c => c.ID == childModel.ID) .SingleOrDefault(); //update existing childreports if (existingChilds != null) { //connection.Entry(existingChild).CurrentValues.SetValues(childModel); existingChilds.TReportName = childModel.name; existingChilds.URL = childModel.url; connection.Entry(existingChilds).State = System.Data.Entity.EntityState.Modified; } else { var newChild = new TReport { URL = childModel.url, TReportName = childModel.name, }; existingParent.TReports.Add(newChild); } } } connection.SaveChanges(); } }
Что я уже пробовал:
Первая попытка: не получилось
foreach (var existingChild in existingParent.TReports.ToList()) { if (!model.TReports.Any(c => c.ID == existingChild.ID)) { connection.TReport.Remove(existingChild); } }
Вторая попытка: не получилось
connection.TReport.RemoveRange(existingParent.TReports.ToArray());
Когда я отлаживал его, он отправлял два объекта модели как null. Почему это так?