using System.Data;
using StackExchange.Profiling.Data;
namespace Umbraco.Cms.Infrastructure.Persistence;
internal static class DbCommandExtensions
{
///
/// Unwraps a database command.
///
///
/// UmbracoDatabase wraps the original database connection in various layers (see
/// OnConnectionOpened); this unwraps and returns the original database command.
///
public static IDbCommand UnwrapUmbraco(this IDbCommand command)
{
IDbCommand unwrapped;
IDbCommand c = command;
do
{
unwrapped = c;
if (unwrapped is ProfiledDbCommand profiled)
{
unwrapped = profiled.InternalCommand;
}
}
while (c != unwrapped);
return unwrapped;
}
}