DefaultConnectionStringResolver.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System.Configuration;
  2. using Abp.Configuration.Startup;
  3. using Abp.Dependency;
  4. namespace Abp.Domain.Uow
  5. {
  6. /// <summary>
  7. /// Default implementation of <see cref="IConnectionStringResolver"/>.
  8. /// Get connection string from <see cref="IAbpStartupConfiguration"/>,
  9. /// or "Default" connection string in config file,
  10. /// or single connection string in config file.
  11. /// </summary>
  12. public class DefaultConnectionStringResolver : IConnectionStringResolver, ITransientDependency
  13. {
  14. private readonly IAbpStartupConfiguration _configuration;
  15. /// <summary>
  16. /// Initializes a new instance of the <see cref="DefaultConnectionStringResolver"/> class.
  17. /// </summary>
  18. public DefaultConnectionStringResolver(IAbpStartupConfiguration configuration)
  19. {
  20. _configuration = configuration;
  21. }
  22. public virtual string GetNameOrConnectionString(ConnectionStringResolveArgs args)
  23. {
  24. Check.NotNull(args, nameof(args));
  25. var defaultConnectionString = _configuration.DefaultNameOrConnectionString;
  26. if (!string.IsNullOrWhiteSpace(defaultConnectionString))
  27. {
  28. return defaultConnectionString;
  29. }
  30. if (ConfigurationManager.ConnectionStrings["Default"] != null)
  31. {
  32. return "Default";
  33. }
  34. if (ConfigurationManager.ConnectionStrings.Count == 1)
  35. {
  36. return ConfigurationManager.ConnectionStrings[0].ConnectionString;
  37. }
  38. 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.");
  39. }
  40. }
  41. }