Используя структуру сущностей, я реализовал мягкое удаление и ограничение уровня данных с помощью IDbCommandTreeInterceptor. При первом запросе, использующем контекст, перехватчик срабатывает. Но при повторной попытке (обновление браузера) перехватчик пропускается. Я проверил, кэшируются ли данные, изменив некоторые данные с помощью студии управления сервером SQL. Изменения отражаются, но перехватчик по-прежнему пропускается. Что может быть причиной того, что это произошло?
Почему IDbCommandTreeInterceptor пропускается во втором запросе?
comment
Таким образом, перехватчик пропускается, вы имеете в виду, что целевой объект действительно удаляется, а не удаляется мягко?
- person Evk   schedule 09.10.2017
comment
мягко удаленные объекты возвращаются после мягкого удаления
- person John Staurt   schedule 09.10.2017
comment
Перехватчик также пропускается при отладке.
- person John Staurt   schedule 09.10.2017
Ответы (1)
согласно комментариям источников это ожидается поведение
Деревья команд создаются как для запросов, так и для команд вставки/обновления/удаления. Однако деревья команд запроса кэшируются моделью, что означает, что создание дерева команд происходит только при первом выполнении запроса, и это уведомление будет происходить только в это время.
Как следствие, результат вашего перехватчика не может зависеть от данных.
person
jbl
schedule
09.10.2017
Понятно, но один бит, который все еще сбивает с толку, заключается в том, что перехватчик срабатывает (для старого запроса), если я запускаю новый запрос, а затем повторно запускаю старый запрос через EF. Но затем, если оба запроса уже были выполнены один раз, перехватчик снова пропускается для обоих взаимозаменяемо, пока не будет выполнен новый запрос. Затем Interceptor получает удар по новому запросу и обоим старым запросам.
- person John Staurt; 09.10.2017
@JohnStaurt действительно неожиданно. Изменили ли вы раздел конфигурации queryCache (см. blogs.msdn.microsoft.com/premier_developer/2017/03/23/ )?
- person jbl; 09.10.2017