Я создаю модель домена, которую позже буду сопоставлять с базой данных, используя EF Code First. Это мой первый проект с использованием Entity Framework, и хотя я читал книгу об этом некоторое время назад, я не помню всех подробностей о том, как это работает.Могу ли я запросить измененный объект перед сохранением его изменений?
В одной части модели домена у меня есть отношения «один ко многим».
public class Parent
{
public IList<Child> Children { get; private set; }
}
После того как пользователь изменил экземпляр в памяти Parent
, и нажимает на кнопку, то это будет время сохраняться этот экземпляр в базу данных. В то время я должен сначала запустить определенную логику сравнения домена между экземпляром, который существует в базе данных (до сохранения), и несохраненной модифицированной версией, находящейся в памяти. Поэтому мне нужно запросить базу данных для получения немодифицированного дубликата экземпляра Parent
и его Children
.
Есть ли код EF Сначала позвольте мне безопасно запустить такой запрос? Я просто беспокоюсь, что, когда EF запускает такой запрос, он увидит, что каждый Child
уже находится в памяти и поэтому повторно использует эти экземпляры и перезаписывает их модификации вместо создания дубликатов. В этой ситуации я действительно хочу дубликатов.
Как получить экземпляр в памяти? Главное, что если он не отслеживается EntityChangeTracker, тогда вам нужно «прикрепить» его и пометить его состояние «измененным», чтобы при вызове SaveChanges в контексте он мог знать, что его необходимо обновить. Если вы сделаете запрос, он будет отслежен, но если вы просто «прикрепите», он будет отслеживаться, и это займет меньше времени. – jannagy02