The number of rows changed, inserted, or deleted; 0 if no rows were affected or the statement failed; and -1 for SELECT statements.
If an instance of this class is casted to the base class RowUpdatedEventArgs, and RecordsAffected is called through the base class reference the returned value will not be correct.
If you need a RowUpdatedEventArgs instance that give the correct RecordsAffected value, you can use the NativeRowUpdatedEventArgs property. But that instance will return native exception and native command instances for properties Errors and Command respectively. There seem to be no good solution to this problem. But as long as you avoid casting the instance to the base class, this property will work fine.