hunostor

Model Create and Update DateTime

Nov 23rd, 2018
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.51 KB | None | 0 0
  1. // create interface IAuditableModel
  2. public interface IAuditableModel
  3. {
  4.     DateTime CreationTime { get; set; }
  5.     DateTime? ModifiedDate { get; set; }
  6. }
  7.  
  8. // override two method in DbContext
  9. public override int SaveChanges()
  10.         {
  11.             DateTimeChange();
  12.  
  13.             return base.SaveChanges();
  14.         }
  15.  
  16.         public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default(CancellationToken))
  17.         {
  18.             DateTimeChange();
  19.  
  20.             return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
  21.         }
  22.  
  23.         private void DateTimeChange()
  24.         {
  25.             var added = ChangeTracker.Entries<IAuditableModel>().Where(E => E.State == EntityState.Added).ToList();
  26.  
  27.             added.ForEach(E =>
  28.             {
  29.                 E.Property(x => x.CreationTime).CurrentValue = DateTime.UtcNow;
  30.                 E.Property(x => x.CreationTime).IsModified = true;
  31.             });
  32.  
  33.             var modified = ChangeTracker.Entries<IAuditableModel>().Where(E => E.State == EntityState.Modified).ToList();
  34.  
  35.             modified.ForEach(E =>
  36.             {
  37.                 E.Property(x => x.ModifiedDate).CurrentValue = DateTime.UtcNow;
  38.                 E.Property(x => x.ModifiedDate).IsModified = true;
  39.  
  40.                 E.Property(x => x.CreationTime).CurrentValue = E.Property(x => x.CreationTime).OriginalValue;
  41.                 E.Property(x => x.CreationTime).IsModified = false;
  42.             });
  43.         }
Advertisement
Add Comment
Please, Sign In to add comment