using System.Configuration;
using Abp.Configuration.Startup;
using Abp.Dependency;
namespace Abp.Domain.Uow
{
///
/// Default implementation of .
/// Get connection string from ,
/// or "Default" connection string in config file,
/// or single connection string in config file.
///
public class DefaultConnectionStringResolver : IConnectionStringResolver, ITransientDependency
{
private readonly IAbpStartupConfiguration _configuration;
///
/// Initializes a new instance of the class.
///
public DefaultConnectionStringResolver(IAbpStartupConfiguration configuration)
{
_configuration = configuration;
}
public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args)
{
Check.NotNull(args, nameof(args));
var defaultConnectionString = _configuration.DefaultNameOrConnectionString;
if (!string.IsNullOrWhiteSpace(defaultConnectionString))
{
return defaultConnectionString;
}
if (ConfigurationManager.ConnectionStrings["Default"] != null)
{
return "Default";
}
if (ConfigurationManager.ConnectionStrings.Count == 1)
{
return ConfigurationManager.ConnectionStrings[0].ConnectionString;
}
throw new AbpException("Could not find a connection string definition for the application. Set IAbpStartupConfiguration.DefaultNameOrConnectionString or add a 'Default' connection string to application .config file.");
}
}
}