Определение бизнес-логики (платформа Entity Framework)

Добавление в приложение Entity Framework бизнес-логики обеспечивает обработку событий, вызываемых во время ряда операций, например при изменении свойств или связей. Она может включать выполнение дополнительных проверок или регистрацию в журнале изменений свойств или вызовов метода SaveChanges. Бизнес-логика реализуется путем обработки событий Entity Framework или определения пользовательских разделяемых методов, вызываемых при изменении свойств. В этом разделе перечислены некоторые события и представлены ссылки на другие связанные разделы.

Событие и разделяемые методы Описание

System.Data.Objects.ObjectContext.ObjectMaterialized

Вызывается при создании новой сущности на основании данных в источнике данных в составе операции загрузки или запроса. Событие возникает после присваивания всех скалярных, сложных и ссылочных свойств объекта, но до загрузки коллекций. Если событие с тем же значение ключа существует в контексте объекта, то Entity Framework не создает объект и это событие не возникнет.

System.Data.Objects.ObjectContext.SavingChanges

Вызывается в начале операции SaveChanges для объекта ObjectContext. Обычно это событие используется для проверки измененного объекта перед записью новых значений в базу данных.

Дополнительные сведения см. в разделе Как выполнять правила бизнес-логики при сохранении изменений (платформа Entity Framework).

System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged

Возникает при выходе сущностей из контекста через удаление или отсоединение методов, при вводе контекста через запрос или при добавлении и присоединении методов. Дополнительные сведения см. в разделе Как выполнять бизнес-логику при изменении состояния объекта.

Dd456876.note(ru-ru,VS.100).gifПримечание
Если используются сущности POCO без посредников для отслеживания изменений, то изменение регистрируется при вызове метода DetectChanges или метода SaveChanges, вызывающего DetectChanges.

System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged

Возникает при изменении сопоставления. Если используется код по умолчанию, формирующий сущности или сущности POCO с прокси-объектами, то возникает также одновременно с фактическим изменением свойства навигации:

Dd456876.note(ru-ru,VS.100).gifПримечание
Если используются сущности POCO без прокси-объектов, то изменение регистрируется при вызове метода DetectChanges или метода SaveChanges, вызывающего DetectChanges.

События могут блокироваться во время массовых операций, таких как Load, Attach и Clear.

Дополнительные сведения см. в разделе Как обеспечить выполнение бизнес-логики при изменении ассоциаций.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanging

Возникает, когда значение скалярного свойства ожидает изменения. Классы, создаваемые платформой Entity Framework , вызывают метод ReportPropertyChanging в методах задания скалярных свойств. Метод ReportPropertyChanging вызывает событие PropertyChanging. Обрабатывайте это событие, выполняя бизнес-логику, такую как проверка, перед изменением значения свойства. Дополнительные сведения см. в разделе Как выполнить бизнес-логику при изменении скалярных свойств (платформа Entity Framework).

При отслеживании изменений, вносимых в пользовательские классы данных, где реализован интерфейс IEntityWithChangeTracker, необходимо использовать интерфейс IEntityChangeTracker для сообщения об изменении свойств.

Dd456876.note(ru-ru,VS.100).gifПримечание
Чтобы получать уведомление об изменении свойств навигации, зарегистрируйтесь для события System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Дополнительные сведения см. в разделе Как обеспечить выполнение бизнес-логики при изменении ассоциаций.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanged

Возникает, когда значение скалярного свойства изменено. Классы, создаваемые платформой Entity Framework , вызывают метод ReportPropertyChanged в методах задания скалярных свойств. Метод ReportPropertyChanged вызывает событие PropertyChanged. Обрабатывайте это событие, выполняя бизнес-логику, такую как запись в журнал, после изменения значения свойства. Дополнительные сведения см. в разделе Как выполнить бизнес-логику при изменении скалярных свойств (платформа Entity Framework).

При отслеживании изменений, вносимых в пользовательские классы данных, где реализован интерфейс IEntityWithChangeTracker, необходимо использовать интерфейс IEntityChangeTracker для сообщения об изменении свойств.

Dd456876.note(ru-ru,VS.100).gifПримечание
Чтобы получать уведомление об изменении свойств навигации, зарегистрируйтесь для события System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Дополнительные сведения см. в разделе Как обеспечить выполнение бизнес-логики при изменении ассоциаций.

Метод OnContextCreated

Средства модель EDM (сущностная модель данных) формируют в классе разделяемый метод OnContextCreated, представляющий EntityContainer для модели и производный от класса ObjectContext. Этот разделяемый метод вызывается при каждом создании экземпляра ObjectContext. Этот разделяемый метод должен быть реализован в коде для регистрации обработчика события SavingChanges. Дополнительные сведения см. в разделе Как выполнять правила бизнес-логики при сохранении изменений (платформа Entity Framework).

On PropertyName Changing и OnPropertyNameChanged

Средства модель EDM (сущностная модель данных) формируют разделяемый метод в скалярных методах доступа набора свойств для каждого типа сущности. Разделяемый метод OnPropertyNameChanging вызывается до установки значения. Разделяемый метод OnPropertyNameChanged вызывается после установки значения. Реализуйте эти разделяемые методы, чтобы добавить бизнес-логику.

См. также

Основные понятия

Настройка объектов (платформа Entity Framework)

Другие ресурсы

Entity Data Model Tools