Hi James Denning,
on of the ways is to have an additional bool field to every table that will indicate whether the object is logically deleted or not and than filter on that field. However using this approach wont actually hide the objects because they would still be read from the database and than filtered. In addition things might get really complicated if there are deleted references as well.
The other possible approach is to have all the tables copied with a _deleted suffix and when ever the deleting event is fired the objects should be moved to the corresponding tables rather then being deleted.
the Telerik team