Sascha Patschka
Sascha Patschka

Reputation: 63

Entity Framework Core - Audit

Is there a way to write an Audit log automatically? I have created a DbSet(Of Protocols)

Here is my protocol class:

 Public Class Protocol
    Inherits ModelBase
    Implements ILogicalTimestamp

    <Key>
    Public Property ProtocolId As Integer
    <Required>
    Public Property ProtocolText As String
    Public Property CreatedByUserId As Integer?
    <Required>
    Public Property CreatedByUser As User
    <Required>
    <DefaultValue(0)>
    Public Property Type As ProtocolType
    Public Property LinkedToUserId As Integer?
    Public Property LinkedToUser As User
    Public Property LinkedToBusinessPartnerId As Integer?
    Public Property LinkedToBusinessPartner As BusinessPartner
    Public Property LinkedToClientId As Integer?
    Public Property LinkedToClient As Client
    Public Property LinkedToSettingId As Integer?
    Public Property LinkedToSetting As Setting
    Public Property LastUpdateTimestamp As Date? Implements ILogicalTimestamp.LastUpdateTimestamp
    Public Property CreationTimestamp As Date? Implements ILogicalTimestamp.CreationTimestamp

    Public Enum ProtocolType
        AutoChanges = 0
        Explicitly = 1
    End Enum

End Class

How can i write changes in protocol?

And how can i get the current UserId into the SaveChanges method to fill CreatedByUserId property in my protocol class? Maybe anyone has an idea to do that automatically.

Upvotes: 1

Views: 976

Answers (1)

thepirat000
thepirat000

Reputation: 13114

You can create a custom DB Context inheriting from DbContext, and then override the SaveChanges() method, so you can manipulate the data before/after modification.

Or you can use a library like Audit.EntityFramework, or check its code (C# sorry).

Also the library EntityFramework-Plus can probably help.

Upvotes: 1

Related Questions