ObjectStateManager
- это компонент, предоставляющий информацию о отслеживаемых объектах.Каждый объект, который может быть сохранен EF, должен быть отслежен = присоединен.Отдельные сущности неизвестны EF (они не отслеживаются), поэтому их изменения не сохраняются при вызове SaveChanges
(в EF нет SubmitChanges
).Отслеживание состоит из ведения информации о начальном состоянии объекта или отношения и внесенных в них изменениях.Он также содержит глобальное состояние объекта.
Процесс, когда вы вызываете SaveChanges, зависит от того, как вы настроили EF для отслеживания изменений, от того, как вы получили объект, и от изменений, которые вы сделали.1006 *
Отслеживание изменений - это функция, которая позволяет EF отслеживать изменения, примененные к объектам, присоединенным к контексту (каждый объект, загруженный запросом, по умолчанию присоединен).EF содержит версию отслеживания изменений:
- Снимок - только для POCO.EF не отслеживает изменения в сущностях, но когда вы вызываете
SaveChanges
, он сравнивает сохраненное состояние сущности (полученное при загрузке сущности) и текущие данные в сущности и соответственно устанавливает его состояние. - Динамический - собственный для сущностей на основе EntityObject и достигается с помощью динамических прокси для POCO.Каждое изменение присоединенной сущности запускает изменение отслеживаемой записи и соответственно устанавливает состояние сущности.Когда вы звоните
SaveChanges
, состояния уже настроены.
Порядок операций по модификации данных является внутренней реализацией EF.Основной порядок определяется вашим отображением, где описывается зависимость между сущностями.