Hello,
I am setting date last modified audit on an entity, I implement an
IAuditableEntity interface and use a helper to set the date modified:
public override bool OnFlushDirty(object entity, object id, object[]
currentState, object[] previousState, string[] propertyNames,
global::NHibernate.Type.IType[] types) {
if (typeof(IAuditableEntity).IsAssignableFrom(entity.GetType())) {
// If entity is auditable as this is only an update
set the last modified date.
SetValue(propertyNames, currentState, item =>
item.LastModified, DateTime.Now);
}
return false;
}
Type safe helper:
public void SetValue<T>(string[] propertyNames, object[] state,
Expression<System.Func<IAuditableEntity, T>> propertyExpression, T
value) {
var memberExpression = propertyExpression.Body as MemberExpression;
if (memberExpression == null)
throw new ArgumentException("The member expression was
not a valid member expression.");
string name = memberExpression.Member.Name;
int index = propertyNames.ToList().IndexOf(name);
if(index == -1)
throw new
InvalidOperationException(string.Format("Property {0} does no exist on
entity.", name));
state[index] = value;
}
Now the question is, I saw that you must set the current state and not
the entity directly why would
var ent = entity as IAuditableEntity;
ent.LastModified = DateTime.Now;
Not work properly or will it be fine to do this?
Thanks
--
Stefan Sedich
Software Developer
http://weblogs.asp.net/stefansedich
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---