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

Determines the strategy in which the error will be handled

Namespace:  Firefly.Box.Data.DataProvider
Assembly:  Firefly.Box (in Firefly.Box.dll) Version: 3.4.23.6473 (3.4.23.6473)

Syntax

C#
public enum DatabaseErrorHandlingStrategy
Visual Basic (Declaration)
Public Enumeration DatabaseErrorHandlingStrategy
Visual C++
public enum class DatabaseErrorHandlingStrategy

Members

Member nameDescription
Ignore
Ignore the error, and try to process
Default
The default behavior of the error
Retry
The operation will be retried
RollbackAndRecover
The transaction will be rollbacked, and the task that started the transaction will try to recover according to the OnDatabaseErrorRetry property
Rollback
Thee transaction will be rollbacked, and the task that started the transaction will be terminated.
Throw
The exception will be thrown and the transaction will be rollbacked.
AbortAllTasks
All open tasks will be closed.

Examples

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 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
CopyC#
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
{
    [TestFixture]
    public class DatabaseErrorHandling
    {
        [Test]
        public void DatabaseErrorHandlingEventSequence()
        {
            var jobs = new Pubs.Jobs();
            jobs.InitializeWithTestData();

            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