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