virtual public void MakeRevision(Entity entity) { //Revision itself: var clone = entity.Clone() as Entity; clone.Revisions = null; OnBeforeRevision(clone); var revision = new Revision { ForeignType = entity.EntityName, ForeignKey = entity.Id, Value = clone.ToJson(), RevisionMessage = entity.RevisionMessage, CreatedAt = DateTimeOffset.Now, Discriminator = entity.EntityName }; RevisionLogic.Add(revision); }