private void _dataContext_PostSavingChanges(object sender, SavingChangesEventArgs e) { if (SavingChanges != null) { SavingChanges(this, e); } }
private void ContextSavingChanges(object sender, SavingChangesEventArgs e) { var allEntity = ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified); foreach (var item in allEntity) { if (item.Entity is not null) { if (item.Entity is Client client) { if (client is not null) { client.DateOfUpdate = DateTime.Now; } } if (item.Entity is Founder founder) { if (founder is not null) { if (founder.Client is not null) { founder.Client.DateOfUpdate = DateTime.Now; } founder.DateOfUpdate = DateTime.Now; } } } } }
private void DbContextAccessorWithAudit_SavingChanges(object?sender, SavingChangesEventArgs e) { var accessor = (sender as DbContextAccessorWithAudit) !; var auditOptions = accessor.DataOptions.Audit; if (!auditOptions.Enabling) { return; } var auditingManager = accessor.GetService <IAuditingManager>(); #pragma warning disable EF1001 // Internal EF Core API usage. var entityEntries = ((IDbContextDependencies)accessor).StateManager .GetEntriesForState(auditOptions.AddedState, auditOptions.ModifiedState, auditOptions.DeletedState, auditOptions.UnchangedState); accessor._audits = auditingManager.GetAudits(entityEntries.Select(s => new EntityEntry(s))); #pragma warning restore EF1001 // Internal EF Core API usage. // 保存审计数据 if (accessor._audits.Count > 0 && auditOptions.SaveAudits) { accessor.Set <Audit>().AddRange(accessor._audits); } }
//public DbContextBase(DbContextOptions options) // : base(options) //{ // SavingChanges += PreSave; //} //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) //{ // if (!optionsBuilder.IsConfigured) // { // throw new Exception("数据库连接字符串未定义"); // } //} public virtual void PreSave(object sender, SavingChangesEventArgs e) { var httpContext = HttpOptions.GetContext(); var userToken = httpContext.getUserToken(); var userId = userToken?.userid; var context = (sender as DbContext); if (context != null) { var entitys = context.ChangeTracker.Entries(); foreach (var entry in entitys) { var thisEntity = (entry.Entity as EntityBase); if (thisEntity == null) { continue; } switch (entry.State) { case EntityState.Detached: break; case EntityState.Unchanged: break; case EntityState.Deleted: entry.State = EntityState.Modified; thisEntity.IsDeleted = true; thisEntity.ModifiedOn = DateTime.Now; thisEntity.ModifiedBy = userId; break; case EntityState.Modified: thisEntity.ModifiedOn = DateTime.Now; thisEntity.ModifiedBy = userId; break; case EntityState.Added: thisEntity.Id = Guid.NewGuid(); thisEntity.CreatedOn = thisEntity.ModifiedOn = DateTime.Now; thisEntity.CreatedBy = thisEntity.ModifiedBy = thisEntity.OwnerUserId = userId; break; default: break; } } } }
/// <summary> /// 保存的时候,自动管理创建时间以及更新时间 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void SavingChangesEvent(object sender, SavingChangesEventArgs e) { var context = sender as TDbContext; // 获取所有新增和更新的实体 var entities = context.ChangeTracker.Entries().Where(u => u.State == EntityState.Added || u.State == EntityState.Modified || u.State == EntityState.Deleted).ToList(); //子实体被修改的时候,去这里找旧的值,这样就不用去数据库再找一遍了 var deletedcache = entities.Where(d => d.State == EntityState.Deleted).ToDictionary(d => d.Entity.GetType().FullName + d.Property("Id").CurrentValue, d => d); foreach (var entity in entities) { switch (entity.State) { case EntityState.Added: if (entity.Entity is not ICreationTime creationtimeentity) { continue; } if (creationtimeentity.CreatedTime == default) { creationtimeentity.CreatedTime = DateTime.Now; } break; case EntityState.Modified: if (entity.Entity is ICreationTime) { var key = entity.Entity.GetType().FullName + entity.Property("Id").CurrentValue; if (deletedcache.ContainsKey(key)) { entity.Property(nameof(ICreationTime.CreatedTime)).CurrentValue = deletedcache[key].Property(nameof(ICreationTime.CreatedTime)).CurrentValue; } else { entity.Property(nameof(ICreationTime.CreatedTime)).IsModified = false; } } if (entity.Entity is IUpdateTime updatetimeentity) { updatetimeentity.UpdatedTime = DateTime.Now; } break; } } base.SavingChangesEvent(sender, e); }
private void HelloWordDBContext_SavingChanges(object sender, SavingChangesEventArgs e) { Console.WriteLine("SavingChanges"); }
private void OnSavingChanges(object sender, SavingChangesEventArgs e) { _cleanString(); ConfigureEntityDates(); }
private void UniversityContext_SavingChanges(object sender, SavingChangesEventArgs e) { Console.WriteLine($"Saving Changes at {DateTime.Now}"); }