Использование пользовательского инициализатора, который будет выполнять CREATE TRIGGER
Команда SQL - единственная опция, если вы хотите, чтобы EF создал для вас триггер ( код, подобный приведенному здесь ).Также не забудьте включить SET NOCOUNT ON
в начале кода триггера.
Но есть более сложная проблема, связанная с логикой триггера.Если вам нужен триггер, который будет изменять данные, передаваемые в базу данных, вы должны понимать, что изменения, сделанные триггером, не будут отражены в вашем текущем контексте.Контекст по-прежнему будет знать только сущность с данными, которые вы передали в базу данных.Обычно это решается установкой свойств, измененных триггером как DatabaseGeneratedOption.Computed
для обновления или DatabaseGeneratedOption.Identity
для вставки.В таком случае вы не можете изменять свойства в вашем приложении, и они должны быть изменены в базе данных.EF гарантирует, что эти свойства будут выбраны после модификации и переданы объекту.Проблема в том, что это не работает с первым кодом .