There are times when one wants to modify entity or log data before entity is saved or updated to database.
This logic can be implemented to EntityProviderBase.cs files EntityProviderBase
class by overriding the protected override void OnDataRequesting(CommandEventArgs e) resume help method.
Example: update entitys created and updated timestamps if such properties exists in entity:
protected override void OnDataRequesting(CommandEventArgs e)
{
base.OnDataRequesting(e);
if (e.MethodName.Equals("Insert", StringComparison.CurrentCultureIgnoreCase))
{
UpdateCreatedData(e.CurrentEntity, e);
UpdateUpdatedData(e.CurrentEntity, e);
}
else if (e.MethodName.Equals("Update", StringComparison.CurrentCultureIgnoreCase))
{
UpdateUpdatedData(e.CurrentEntity, e);
}
}
private void UpdateCreatedData(Object entity, CommandEventArgs e)
{
Type type = entity.GetType();
PropertyInfo createdProp = type.GetProperty("Created");
if (createdProp != null && createdProp.CanWrite)
{
DateTime now = DateTime.Now;
createdProp.SetValue(entity, now, null);
e.Command.Parameters["@Created"].Value = now;
}
}
private void UpdateUpdatedData(Object entity, CommandEventArgs e)
{
Type type = entity.GetType();
PropertyInfo updatedProp = type.GetProperty("Updated");
if (updatedProp != null && updatedProp.CanWrite)
{
DateTime now = DateTime.Now;
updatedProp.SetValue(entity, now, null);
e.Command.Parameters["@Updated"].Value = now;
}
}