Guid Entity.Deleted; Guid EntityLink.Deleted; class Deletion : IPersistent { // !! Not IRemotable Guid ID; DateTime Date; UserLink User; string HeadTable; string Entity; } Provider.Query/Provider.List { Add (Deleted is NULL) for every query where condition } Provider.Delete { Add to Deletions and get Deletion.ID Find all deleted entities (head entity and all cascades) and set Deletion.ID for each } Provider.Save { // Do nothing } TO BE RESOLVED: Multi-Delete creates one deletion or many Purge Delete { Delete Entity; for relationship in children { if relationship == Cascade { Purge relationship.Child; } else if relationship == SetNull { relationship.Child.ID = NULL; } } Purge Deletion; }