/// <summary> /// This method saves the model changes to the database. /// If the tracker for a table is active, it will also put the old values in tracking table. /// Always use this method instead of SaveChanges() whenever possible. /// </summary> /// <param name="userName">Username of the logged in identity</param> /// <returns>Returns the number of objects written to the underlying database.</returns> public virtual int SaveChanges(object userName) { if (!TrackingEnabled) { return(base.SaveChanges()); } dynamic metadata = new ExpandoObject(); _metadataConfiguration?.Invoke(metadata); _coreTracker.AuditChanges(userName, metadata); IEnumerable <EntityEntry> addedEntries = _coreTracker.GetAdditions(); // Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining. int result = base.SaveChanges(); //By now., we have got the primary keys of added entries of added entiries because of the call to savechanges. _coreTracker.AuditAdditions(userName, addedEntries, metadata); //save changes to audit of added entries base.SaveChanges(); return(result); }
/// <summary> /// This method saves the model changes to the database. /// If the tracker for a table is active, it will also put the old values in tracking table. /// Always use this method instead of SaveChanges() whenever possible. /// </summary> /// <param name="userName">Username of the logged in identity</param> /// <returns>Returns the number of objects written to the underlying database.</returns> public virtual int SaveChanges(object userName) { if (!GlobalTrackingConfig.Enabled) { return(base.SaveChanges()); } _coreTracker.AuditChanges(userName); IEnumerable <DbEntityEntry> addedEntries = _coreTracker.GetAdditions(); // Call the original SaveChanges(), which will save both the changes made and the audit records...Note that added entry auditing is still remaining. int result = base.SaveChanges(); //By now., we have got the primary keys of added entries of added entiries because of the call to savechanges. _coreTracker.AuditAdditions(userName, addedEntries); //save changes to audit of added entries base.SaveChanges(); return(result); }