[This is preliminary documentation and is subject to change.]
Enumerates the options available to a DatabaseExceptionHandler to affect how
the exception is handled.
Declaration Syntax
C# |
public enum DatabaseExceptionOutcome
Members
Member | Description |
---|---|
Retry | This option is not valid for DatabaseResultType of
UpdateConflict. It makes another attempt at performing the database
operation. |
Fail | This option does not attempt to deal with the problem, but simply
rethrows the exception. This will most likely result in application
termination. |
Rollback | This option causes the state of all objects in memory to be
rolled back to their state at the start of the current operation execution.
|
RollbackNoRefresh | This option is similar to Rollback, except that when the state of
objects is rolled back in memory, the previous state of objects will not be
retrieved from the database. Instead, any modified objects which do not
hava a previous version in memory will be marked invalid. If this is set
in response to an UpdateConflict, the UseRemote functionality is also
performed. |
ReExecute | This option performs the same function as Rollback (and if
required, UseRemote) and then re-executes the operation which produced the
commit fail. Note that this is different to setting ResultAction.ReExecute, which does not
perform a Rollback. |
UseLocal | This option is permitted only if the DatabaseResultType is UpdateConflict. The
handler in this case is called not at the database commit point, but
immediately after an object update failed because another (remote) session
has already updated the object. This option causes the version of the
object in this local session to take precedence, and the update will be
reapplied. You can alter the local value, perhaps attempting a value
merge, before setting this option. |
UseRemote | This option is permitted only if the DatabaseResultType is UpdateConflict. The
handler in this case is called not at the database commit point, but
immediately after an object update failed because another (remote) session
has already updated the object. This option causes the version of the
object in the remote session to take precedence, and the value of the
object in this session will be overwritten with the remote value. This
option is set automatically if you set Rollback on an update conflict.
|
Remarks
Some of these options can only be used for particular fail types.
The fail type is given by the DatabaseResultType property of the PersistateDatabaseException supplied
to the handler.