views:

96

answers:

2

All of our database tables have UpdateUserID and UpdateTS. I'd like to have this set if my entity has changes. Is there a way I can have this update on the spot conditionally? If I manually set UpdateTS in code, then it will say that my entity has changed and will always update the object.

+1  A: 

I call this extension method before calling context.SaveChanges():

public static void SetLastModified(this ObjectContext context, DateTime dateTime)
{
    DateTime now = DateTime.UtcNow;
    foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified))
    {
        if (!entry.IsRelationship)
        {
            IHasLastModified lastModified = entry.Entity as IHasLastModified;
            if (lastModified != null)
                lastModified.LastModified = now;
        }
    }
}

I can easily call this code, because I've wrapper the ObjectContext in a repository class. If you're using it bare, you can hook up the ObjectContext.SavingChanges event to do something similar.

Sander Rijken
A: 

You should be able to handle the SavingChanges event (example here) and perform logic as outlined by @sander

ongle