У меня есть объект, который называется Uczestnik
, который только что был сохранен в базе данных
var konsultant = uczestnik.Konsultanci;
uczestnik.Konsultanci = null; // null attached object and reuse it's ID later on for SAVE purposes
uczestnik.KonsultantNazwa = konsultant.KonsultantNazwa;
uczestnik.Szkolenie = null; // null attached object and reuse it's ID later on for SAVE purposes
uczestnik.SzkolenieID = szkolenie.SzkolenieID;
context.SzkolenieUczestnicies.AddObject(uczestnik);
context.SaveChanges();
context.Detach(uczestnik); // detatch to prevent Context problems
uczestnik.Szkolenie = szkolenie;// reassign for use in ObjectListView
uczestnik.Konsultanci = konsultant; // reassign for use in ObjectListView
После сохранения он возвращается в ObjectListView, где пользователь решил изменить какое-то значение, и значение было изменено (одно значение из нескольких, чтобы быть точным). Если я проверяю состояние объекта значения, оно находится в неизменном состоянии, поэтому вызовы .Attach и .SaveChanges () ничего не сделают. Я могу использовать ChangeObjectState
, но если ничего не изменилось, то нет смысла это делать.
context.SzkolenieUczestnicies.Attach(uczestnik);
//context.ObjectStateManager.ChangeObjectState(uczestnik, EntityState.Modified);
context.SaveChanges();
Как я могу обнаружить изменение и предотвратить ненужный трафик (я могу представить ситуацию, когда ничего не изменилось в объекте, который содержит файлы размером 5 МБ), поэтому resaving
это не имеет смысла. Разве сущность не достаточно умна, чтобы обнаружить, что из 15 было изменено только одно поле, и изменить только это поле?