DatabaseErrorHandlingStrategy Enumeration

Determines the strategy in which the error will be handled


Namespace: Firefly.Box.Data.DataProvider
Assembly: Firefly.Box (in Firefly.Box.dll) Version: debug-master-v:33791
public enum DatabaseErrorHandlingStrategy


This example demonstrates the usage of DatabaseErrorHandling
This example is in the form of Unit Tests. It references the NUnit framework. This framework can be downloaded from For more information about unit testing visit:
This example is based on test data. The code for the entities included in this test data can be found in the documentation of Entity
using System;
using System.Collections.Generic;
using System.Text;
using Firefly.Box.Data.DataProvider;
using NUnit.Framework;
using Firefly.Box;
using Firefly.Box.Testing;

namespace TestFirefly.Box.Documentation
    public class DatabaseErrorHandling
        public void DatabaseErrorHandlingEventSequence()
            var jobs = new Pubs.Jobs();

            var bp = new BusinessProcess()
                From = jobs,
                Activity = Activities.Insert

            string eventSequence = "";
            bp.PreviewDatabaseError += e =>
                eventSequence += "PreviewDatabaseError " + e.ErrorType + "\n";
                e.HandlingStrategy = DatabaseErrorHandlingStrategy.Rollback;
            bp.DatabaseErrorOccurred += e => eventSequence += "DatabaseErrorOccurred " + e.ErrorType + "\n";
            var handler = bp.Handlers.AddDatabaseErrorHandler(DatabaseErrorType.DuplicateIndex);
            handler.Invokes += e => eventSequence += "DatabaseErrorHandler " + e.ErrorType + "\n";
            bp.ForFirstRow(() =>
                jobs.Id.Value = 1;//Duplicate index error, because job with id 1 already exists
            eventSequence.ShouldBe("PreviewDatabaseError DuplicateIndex\n" +
                            "DatabaseErrorHandler DuplicateIndex\n" +
                            "DatabaseErrorOccurred DuplicateIndex\n");


Ignore0 Ignore the error, and try to process
Default1 The default behavior of the error
Retry2 The operation will be retried
RollbackAndRecover3 The transaction will be rolled back, and the task that started the transaction will try to recover according to the [!:UIController.OnDatabaseErrorRetry] property
Rollback4 The transaction will be rolled back, and the task that started the transaction will be terminated.
Throw5 The exception will be thrown and the transaction will be rolled back.
AbortAllTasks6 All open tasks will be closed.
AbortTask7 The current task will close.

See Also