Руководство по использованию Entity Framework Change Tracker для аудита изменений данных в .NET.

Популярность EF резко возросла с момента выпуска Entity Framework Core, и он стал одним из наиболее широко используемых инструментов в экосистеме .NET. Во многом это было обусловлено стремлением к разработке баз данных по принципу «сначала код» (а не по принципу «сначала база данных»). ). Прошли те времена, когда мы засоряли наши решения непроверенными и плохо управляемыми сценариями баз данных. Для таких проблем, как аудит, который исторически основывался на триггерах базы данных, нам часто приходится искать новые решения. К счастью, Entity Framework «Отслеживание изменений» здесь, чтобы помочь!

Код реализации можно найти здесь:



Трекер изменений Entity Framework

Класс ChangeTracker в Entity Framework — это волшебный соус, который за кулисами определяет, что именно изменилось в нашем приложении. Различные поставщики EF просто переводят изменения, предоставленные ChangeTracker, в формат, понятный используемой базе данных. Этот перевод происходит каждый раз, когда мы выполняем SaveChanges в нашем DbContext.

К счастью, мы также можем получить доступ к ChangeTracker, чтобы понять, какие данные изменились, и применить эти изменения к нашим таблицам аудита (коллекции, контейнеры, файловые хранилища, озера, фермы...?!). Если абстрагировать аудит вместе с EF, на самом деле не имеет значения, какое хранилище данных мы используем, и это одна из причин, по которой мы вообще используем EF!

Аудит изменений данных

Мы можем подключиться к методу SaveChanges в нашем DbContext и добавить любые изменения в наш аудит прямо перед этим: