Files
Umbraco-CMS/src/Umbraco.Core/Persistence/PetaPocoConnectionExtensions.cs
Morten Christensen 31a5363387 Adding fault handling extensions for IDbCommand.
Adding unit tests to verify retry strategies.
Adding a RetryPolicy factory for our standard configuration.
2013-02-05 14:31:55 -01:00

35 lines
1.9 KiB
C#

using System.Data;
using Umbraco.Core.Persistence.FaultHandling;
namespace Umbraco.Core.Persistence
{
/// <summary>
/// Provides a set of extension methods adding retry capabilities into the standard <see cref="System.Data.IDbConnection"/> interface, which is used in PetaPoco.
/// </summary>
public static class PetaPocoConnectionExtensions
{
/// <summary>
/// Opens a database connection with the connection settings specified in the ConnectionString property of the connection object.
/// Uses the default retry policy when opening the connection.
/// </summary>
/// <param name="connection">The connection object that is required as per extension method declaration.</param>
public static void OpenWithRetry(this IDbConnection connection)
{
var connectionString = connection.ConnectionString ?? string.Empty;
var retryPolicy = RetryPolicyFactory.GetDefaultSqlConnectionRetryPolicyByConnectionString(connectionString);
OpenWithRetry(connection, retryPolicy);
}
/// <summary>
/// Opens a database connection with the connection settings specified in the ConnectionString property of the connection object.
/// Uses the specified retry policy when opening the connection.
/// </summary>
/// <param name="connection">The connection object that is required as per extension method declaration.</param>
/// <param name="retryPolicy">The retry policy defining whether to retry a request if the connection fails to be opened.</param>
public static void OpenWithRetry(this IDbConnection connection, RetryPolicy retryPolicy)
{
// Check if retry policy was specified, if not, use the default retry policy.
(retryPolicy != null ? retryPolicy : RetryPolicy.NoRetry).ExecuteAction(connection.Open);
}
}
}