Since I didn't have to bother with backward compatibility with a previous dataprovider like the other MS providers did, I opted for the templated event handler approach which I think is much cooler:
/// <summary>
/// Row updating event handler
/// </summary>
public event EventHandler<RowUpdatingEventArgs> RowUpdating
{
add { base.Events.AddHandler(_updatingEventPH, value); }
remove { base.Events.RemoveHandler(_updatingEventPH, value); }
}
/// <summary>
/// Row updated event handler
/// </summary>
public event EventHandler<RowUpdatedEventArgs> RowUpdated
{
add { base.Events.AddHandler(_updatedEventPH, value); }
remove { base.Events.RemoveHandler(_updatedEventPH, value); }
}