Основные сценарии применения обработчика:
Обработчик представляет собой класс на C# для каждого типа сущности. В системе он наследует абстрактный класс EntityTypeCustomHooks<TEntity>. Методы в нём объявлены как virtual с реализацией по умолчанию Task.CompletedTask. Переопределять нужно только те методы, логика которых требуется.
В обработчике доступны четыре переопределяемых метода (хука), которые вызываются при операциях с сущностью:
| Хук | Когда вызывается | Параметры |
|---|---|---|
| BeforeUpsert | До вставки или обновления сущности. Используется для базовых проверок. | context, detachedEntity |
| AfterUpsert | После вставки или обновления. Предназначен для бизнес-логики: предзаполнение свойств, исходящие интеграции. | context, contextEntity, detachedEntity |
| BeforeDelete | До удаления сущности. | context, detachedEntity |
| AfterDelete | После удаления сущности. | context, contextEntity |
Помимо CRUD-хуков в обработчике доступны три метода, связанные со сменой состояния и запуском воркфлоу:
| Хук | Когда вызывается | Параметры |
|---|---|---|
| BeforeSetState | До смены состояния сущности в жизненном цикле | context, entity, oldStateId, newStateId |
| AfterSetState | После смены состояния | context, entity, oldStateId, newStateId |
| BeforeStartWorkflow | Перед запуском воркфлоу по сущности | context, contextEntity |
Эти методы можно переопределять так же, как и остальные хуки. По умолчанию у них пустая реализация.
В методы передаются следующие параметры:
detachedEntity.Примечание
Для доступа требуются права на гранулу Настройки менеджера объектов.
Чтобы изменить обработчик, выполните следующие шаги:

В настройках генерируется класс с именем CustomHooks, который наследует EntityTypeCustomHooks<ИмяТипаСущности>.
Перейти на русскую версию?