Определение бизнес-логики (платформа Entity Framework)
Добавление в приложение Entity Framework бизнес-логики обеспечивает обработку событий, вызываемых во время ряда операций, например при изменении свойств или связей. Она может включать выполнение дополнительных проверок или регистрацию в журнале изменений свойств или вызовов метода SaveChanges. Бизнес-логика реализуется путем обработки событий Entity Framework или определения пользовательских разделяемых методов, вызываемых при изменении свойств. В этом разделе перечислены некоторые события и представлены ссылки на другие связанные разделы.
Событие и разделяемые методы | Описание |
---|---|
Вызывается при создании новой сущности на основании данных в источнике данных в составе операции загрузки или запроса. Событие возникает после присваивания всех скалярных, сложных и ссылочных свойств объекта, но до загрузки коллекций. Если событие с тем же значение ключа существует в контексте объекта, то Entity Framework не создает объект и это событие не возникнет. |
|
Вызывается в начале операции SaveChanges для объекта ObjectContext. Обычно это событие используется для проверки измененного объекта перед записью новых значений в базу данных. Дополнительные сведения см. в разделе Как выполнять правила бизнес-логики при сохранении изменений (платформа Entity Framework). |
|
System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged |
Возникает при выходе сущностей из контекста через удаление или отсоединение методов, при вводе контекста через запрос или при добавлении и присоединении методов. Дополнительные сведения см. в разделе Как выполнять бизнес-логику при изменении состояния объекта.
Примечание
Если используются сущности POCO без посредников для отслеживания изменений, то изменение регистрируется при вызове метода DetectChanges или метода SaveChanges, вызывающего DetectChanges.
|
System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged |
Возникает при изменении сопоставления. Если используется код по умолчанию, формирующий сущности или сущности POCO с прокси-объектами, то возникает также одновременно с фактическим изменением свойства навигации:
Примечание
Если используются сущности POCO без прокси-объектов, то изменение регистрируется при вызове метода DetectChanges или метода SaveChanges, вызывающего DetectChanges.
События могут блокироваться во время массовых операций, таких как Load, Attach и Clear. Дополнительные сведения см. в разделе Как обеспечить выполнение бизнес-логики при изменении ассоциаций. |
System.Data.Objects.DataClasses.StructuralObject.PropertyChanging |
Возникает, когда значение скалярного свойства ожидает изменения. Классы, создаваемые платформой Entity Framework , вызывают метод ReportPropertyChanging в методах задания скалярных свойств. Метод ReportPropertyChanging вызывает событие PropertyChanging. Обрабатывайте это событие, выполняя бизнес-логику, такую как проверка, перед изменением значения свойства. Дополнительные сведения см. в разделе Как выполнить бизнес-логику при изменении скалярных свойств (платформа Entity Framework). При отслеживании изменений, вносимых в пользовательские классы данных, где реализован интерфейс IEntityWithChangeTracker, необходимо использовать интерфейс IEntityChangeTracker для сообщения об изменении свойств.
Примечание
Чтобы получать уведомление об изменении свойств навигации, зарегистрируйтесь для события System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Дополнительные сведения см. в разделе Как обеспечить выполнение бизнес-логики при изменении ассоциаций.
|
System.Data.Objects.DataClasses.StructuralObject.PropertyChanged |
Возникает, когда значение скалярного свойства изменено. Классы, создаваемые платформой Entity Framework , вызывают метод ReportPropertyChanged в методах задания скалярных свойств. Метод ReportPropertyChanged вызывает событие PropertyChanged. Обрабатывайте это событие, выполняя бизнес-логику, такую как запись в журнал, после изменения значения свойства. Дополнительные сведения см. в разделе Как выполнить бизнес-логику при изменении скалярных свойств (платформа Entity Framework). При отслеживании изменений, вносимых в пользовательские классы данных, где реализован интерфейс IEntityWithChangeTracker, необходимо использовать интерфейс IEntityChangeTracker для сообщения об изменении свойств.
Примечание
Чтобы получать уведомление об изменении свойств навигации, зарегистрируйтесь для события System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Дополнительные сведения см. в разделе Как обеспечить выполнение бизнес-логики при изменении ассоциаций.
|
Метод OnContextCreated |
Средства модель EDM (сущностная модель данных) формируют в классе разделяемый метод OnContextCreated, представляющий EntityContainer для модели и производный от класса ObjectContext. Этот разделяемый метод вызывается при каждом создании экземпляра ObjectContext. Этот разделяемый метод должен быть реализован в коде для регистрации обработчика события SavingChanges. Дополнительные сведения см. в разделе Как выполнять правила бизнес-логики при сохранении изменений (платформа Entity Framework). |
On PropertyName Changing и OnPropertyNameChanged |
Средства модель EDM (сущностная модель данных) формируют разделяемый метод в скалярных методах доступа набора свойств для каждого типа сущности. Разделяемый метод OnPropertyNameChanging вызывается до установки значения. Разделяемый метод OnPropertyNameChanged вызывается после установки значения. Реализуйте эти разделяемые методы, чтобы добавить бизнес-логику. |
См. также
Основные понятия
Настройка объектов (платформа Entity Framework)