[This is preliminary documentation and is subject to change.]

Occurs when a database error occurs and after all the DatabaseErrorHandler processed the error.

Namespace:  Firefly.Box.Advanced
Assembly:  Firefly.Box (in Firefly.Box.dll) Version: (


public event DatabaseErrorEventHandler DatabaseErrorOccurred
Visual Basic (Declaration)
Public Event DatabaseErrorOccurred As DatabaseErrorEventHandler
Visual C++
 event DatabaseErrorEventHandler^ DatabaseErrorOccurred {
	void add (DatabaseErrorEventHandler^ value);
	void remove (DatabaseErrorEventHandler^ value);


When ever a database error happen, the following occurs:


the event flow of a database error
This example is in the form of Unit Tests. It references the NUnit framework. This framework can be downloaded from www.NUnit.org. For more information about unit testing visit: www.NUnit.org.
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");


See Also