Обновление существующих строк не работает с помощью "set values" при использовании entityframework.
Почему setvalues не работает для меня? Разве это не работает для объектов модели?
using (var connection = new TReportEntitiesConnection()) { var header = connection.THeaders.Include("TReports").SingleOrDefault(f => f.ID == model.ID); if (header != null) { header.THeaderTitle = model.THeaderTitle; //update parent } foreach (var existingChild in header.TReports.ToList()) { if (!model.TReports.Any(c => c.ID == existingChild.ID)) connection.TReport.Remove(existingChild); } foreach (var url in model.TReports) { var existingChild = header.TReports .Where(c => c.ID == url.ID) .SingleOrDefault(); if (existingChild!= null) { //update child connection.Entry(existingChild).CurrentValues.SetValues(url); } else { var newChild = new TReport { TReportName = url.name, URL = url.url, }; header.TReports.Add(newChild); } } connection.SaveChanges(); }
Что я уже пробовал:
Я попытался изменить его, но потом понял, что он продолжает добавлять новые строки.
header.TReports.Add(new TReport() { TReportName=url.name, URL=url.url });