1

My goal is to add code for automatically tracking entities in the DbContext file when SaveChanges is called.

I created an interface called ITrackable with (CreatedBy, CreatedDate, UpdatedBy, UpdatedDate). Any of my entities that need to be tracked implement it.

In my DbContext I am trying to do something like the following:

    public override int SaveChanges()
    {
        var entries = ChangeTracker.Entries();
        foreach (var entry in entries)
        {
            if (entry.Entity is ITrackable trackable)
            {
                var now = DateTime.UtcNow;
                var user = GetCurrentUser();
                switch (entry.State)
                {
                    case EntityState.Modified:
                        trackable.UpdatedDate= now;
                        trackable.UpdatedBy= user;
                        break;

                    case EntityState.Added:
                        trackable.CreatedDate = now;
                        trackable.CreatedBy = user;
                        trackable.UpdatedDate= now;
                        trackable.UpdatedBy= user;
                        break;
                }
            }
        }
     // Need to know what to return here...
    }
  1. I am trying to figure out if this is the best way to still do this
  2. Doesn't the DbContext SaveChanges() return all types of different integers based on the situation. I don't want to be responsible for handling all of that now.
  3. If anyone has any better ways of doing this these days please let me know.
Camilo Terevinto
  • 31,141
  • 6
  • 88
  • 120
Blake Rivell
  • 13,105
  • 31
  • 115
  • 231

0 Answers0