Re: Non-physical delete... again

From: Aristedes Maniatis (ar..sh.com.au)
Date: Tue Jun 02 2009 - 05:29:54 EDT

  • Next message: Andrus Adamchik: "Re: Non-physical delete... again"

    On 02/06/2009, at 7:08 PM, Andrey Razumovsky wrote:

    >> Yeah, good idea to move this down the stack. I would love to have the
    >> ObjectContext level code to stay unchanged, but then generate
    >> UPDATE instead
    >> of DELETE at the lower levels if entity is tagged as "soft delete".
    >
    >
    > I actually want to see this more generic, i.e. DeletionStrategy
    > interface
    > with one default implementation (which fires DELETE) and ability to
    > set my
    > own.

    Two thoughts:

    1. Because the second most commonly used implementation will be:

    * boolean NOT NULL field called 'isDeleted'

    Could this alternative implementation be one of the 'out of the box'
    choices? For us, we'd want that choice per table since some tables we
    actually do delete (since we don't care about keeping historical
    data). For Cayenne, the ability to do this without too much code would
    be very useful and a strong 'selling point' for the framework.

    2. This is only a step from having an update strategy as well. For
    instance, a customer who wanted to keep a complete audit trail of all
    changes to Contact records might want every UPDATE to actually be an
    INSERT with the old record marked as deleted and all relations
    appropriately adjusted. I'm not convinced this is the best design
    pattern (as opposed to storing the diffs of the changes in some log
    file), but I've been thinking a little about this approach.

    Ari

    -------------------------->
    ish
    http://www.ish.com.au
    Level 1, 30 Wilson Street Newtown 2042 Australia
    phone +61 2 9550 5001 fax +61 2 9550 4001
    GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A



    This archive was generated by hypermail 2.0.0 : Tue Jun 02 2009 - 05:30:36 EDT