HelpDeskHero — automatyczny audyt encji przez SaveChangesInterceptor

W trzynastym odcinku serii HelpDeskHero Production Edition pokazuję, jak przenieść techniczny audyt encji do jednego miejsca przy pomocy SaveChangesInterceptor w EF Core. Po poprzednich odcinkach HelpDeskHero ma już tworzenie ticketów, odczyty, walidację, spójne błędy API, workflow, komentarze, historię zmian, soft delete, restore oraz ochronę przed nadpisaniem zmian przez RowVersion. Teraz porządkuję kolejny element aplikacji produkcyjnej: automatyczne ustawianie pól audytowych. Do tej pory w wielu miejscach kodu trzeba było ręcznie ustawiać: CreatedAtUtc CreatedByUserId UpdatedAtUtc UpdatedByUserId To działa, ale łatwo o tym zapomnieć. Dlatego w tym odcinku dodaję SaveChangesInterceptor, który zrobi to automatycznie dla encji dziedziczących po AuditableEntity. Najważniejsza myśl tego odcinka: Audyt techniczny powinien być automatyczny, powtarzalny i trudny do przypadkowego pominięcia. W odcinku pokazuję między innymi: czym jest audyt techniczny encji, czym różni się audyt techniczny od historii biznesowej, dlaczego nie chcę ręcznie ustawiać dat i użytkownika w każdej metodzie, jak wykorzystać klasę bazową AuditableEntity, jak dodać ICurrentUserProvider, jak dodać tymczasowy DemoCurrentUserProvider, jak przygotować AuditableEntitySaveChangesInterceptor, jak obsłużyć SavingChanges i SavingChangesAsync, jak odczytać encje z ChangeTracker, jak ustawić CreatedAtUtc i CreatedByUserId dla nowych encji, jak ustawić UpdatedAtUtc i UpdatedByUserId dla zmienionych encji, jak zarejestrować interceptor w Dependency Injection, jak podpiąć interceptor do AppDbContext, jak uprościć kod w TicketApplicationService, jak sprawdzić efekt w SQL Server. W tym odcinku mocno rozróżniam dwie rzeczy: Audyt techniczny mówi, kiedy i przez kogo encja została utworzona lub zmieniona. Historia biznesowa mówi, co wydarzyło się z ticketem. Dlatego AuditableEntity i TicketHistoryEntry nie zastępują się nawzajem. One się uzupełniają. To kolejny krok w stronę aplikacji, którą łatwiej utrzymać, rozbudować i diagnozować. .NET, ASP.NET Core, EF Core, Entity Framework Core, SQL Server, SaveChangesInterceptor, ChangeTracker, AuditableEntity, audit trail, auditing, Web API, HelpDeskHero, Clean Architecture, Application Service, SQL Server 2022, C#, backend, kurs .NET, kurs EF Core, programowanie, system helpdesk

CHOSEN ONE!! YOUR IDENTITY REVEAL JUST SHOOK THE INTERNET... AND THEIR MINDS
▶︎

CHOSEN ONE!! YOUR IDENTITY REVEAL JUST SHOOK THE INTERNET... AND THEIR MINDS

HelpDeskHero — soft delete i przywracanie ticketów bez kasowania danych
▶︎

HelpDeskHero — soft delete i przywracanie ticketów bez kasowania danych

Musica para trabajar activo y alegre - Música Alegre para en Tiendas, Cafés | Deep House Mix 2026
▶︎

Musica para trabajar activo y alegre - Música Alegre para en Tiendas, Cafés | Deep House Mix 2026

Android 17 sucks. So I put Linux on a phone.
▶︎

Android 17 sucks. So I put Linux on a phone.

Nie dawaj aplikacji db_owner — EF Core, SQL Server i least privilege
▶︎

Nie dawaj aplikacji db_owner — EF Core, SQL Server i least privilege

Schock aus Stuttgart: Frau im Einkaufszentrum niedergestochen & angezündet!
▶︎

Schock aus Stuttgart: Frau im Einkaufszentrum niedergestochen & angezündet!

Don't Hang Up On AI Scammers. Do THIS Instead.
▶︎

Don't Hang Up On AI Scammers. Do THIS Instead.

Drohnen greifen eigene Leute an + Selensky schmeißt Armee-Chef raus + Putin zerstört Türken-Schiff!
▶︎

Drohnen greifen eigene Leute an + Selensky schmeißt Armee-Chef raus + Putin zerstört Türken-Schiff!

Keynote: After the AI Hype – What’s Real, and What’s Next - Richard Campbell - 2026
▶︎

Keynote: After the AI Hype – What’s Real, and What’s Next - Richard Campbell - 2026

Peter Hahne über Jens Spahn: Ist Leihmutterschaft eine Form der Prostitution? (Dialog mit R.Bonelli)
▶︎

Peter Hahne über Jens Spahn: Ist Leihmutterschaft eine Form der Prostitution? (Dialog mit R.Bonelli)

The Pot Is About to Blow Sky-High | Interview with Daniel Matissek
▶︎

The Pot Is About to Blow Sky-High | Interview with Daniel Matissek

Która data mówi prawdę? Czas biznesowy kontra systemowy | Relacyjny Renesans
▶︎

Która data mówi prawdę? Czas biznesowy kontra systemowy | Relacyjny Renesans

Blue gradient background - screensaver, mood lighting, ambiance, TV art, focus, study
▶︎

Blue gradient background - screensaver, mood lighting, ambiance, TV art, focus, study

Eine Anleitung für die Autobahn
▶︎

Eine Anleitung für die Autobahn

Dlaczego log transakcyjny SQL Server rośnie?
▶︎

Dlaczego log transakcyjny SQL Server rośnie?

Left-wing protest 😱 counters Siegmund and LOSES!
▶︎

Left-wing protest 😱 counters Siegmund and LOSES!

How to Design APIs Like a Senior Engineer (REST, GraphQL, Auth, Security)
▶︎

How to Design APIs Like a Senior Engineer (REST, GraphQL, Auth, Security)

EF Core nie musi robić bałaganu w SQL Serverze
▶︎

EF Core nie musi robić bałaganu w SQL Serverze

SQL Server od środka: baza danych to nie tylko tabele
▶︎

SQL Server od środka: baza danych to nie tylko tabele

I've implemented AI in 10+ companies - here are 5 processes that ACTUALLY WORK
▶︎

I've implemented AI in 10+ companies - here are 5 processes that ACTUALLY WORK