/// <summary>
        /// Figures out the Provider and ConnectionString from either a connection string
        /// name in a config file or full  ConnectionString and provider.         
        /// </summary>
        /// <param name="connectionString">Config file connection name or full connection string</param>
        /// <param name="providerName">optional provider name. If not passed with a connection string is considered Sql Server</param>
        public static ConnectionStringInfo GetConnectionStringInfo(string connectionString, string providerName = null)
        {
            var info = new ConnectionStringInfo();

            if (string.IsNullOrEmpty(connectionString))
                throw new InvalidOperationException(Resources.AConnectionStringMustBePassedToTheConstructor);

            if (!connectionString.Contains("="))
            {
                // it's a connection string entry
                var connInfo = ConfigurationManager.ConnectionStrings[connectionString];
                if (connInfo != null)
                {
                    if (!string.IsNullOrEmpty(connInfo.ProviderName))
                        info.Provider = DbProviderFactories.GetFactory(connInfo.ProviderName);
                    else
                        info.Provider = DbProviderFactories.GetFactory(DefaultProviderName);

                    connectionString = connInfo.ConnectionString;
                }
                else
                    throw new InvalidOperationException(Resources.InvalidConnectionStringName);
            }
            else
            {
                if (providerName == null)
                    providerName = DefaultProviderName;
                info.Provider = DbProviderFactories.GetFactory(providerName);
            }

            info.ConnectionString = connectionString;

            return info;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Figures out the Provider and ConnectionString from either a connection string
        /// name in a config file or full  ConnectionString and provider.
        /// </summary>
        /// <param name="connectionString">Config file connection name or full connection string</param>
        /// <param name="providerName">optional provider name. If not passed with a connection string is considered Sql Server</param>
        public static ConnectionStringInfo GetConnectionStringInfo(string connectionString, string providerName = null)
        {
            var info = new ConnectionStringInfo();

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new InvalidOperationException(Resources.AConnectionStringMustBePassedToTheConstructor);
            }

            if (!connectionString.Contains("="))
            {
                // it's a connection string entry
                var connInfo = ConfigurationManager.ConnectionStrings[connectionString];
                if (connInfo != null)
                {
                    if (!string.IsNullOrEmpty(connInfo.ProviderName))
                    {
                        info.Provider = DbProviderFactories.GetFactory(connInfo.ProviderName);
                    }
                    else
                    {
                        info.Provider = DbProviderFactories.GetFactory(DefaultProviderName);
                    }

                    connectionString = connInfo.ConnectionString;
                }
                else
                {
                    throw new InvalidOperationException(Resources.InvalidConnectionStringName);
                }
            }
            else
            {
                if (providerName == null)
                {
                    providerName = DefaultProviderName;
                }
                info.Provider = DbProviderFactories.GetFactory(providerName);
            }

            info.ConnectionString = connectionString;

            return(info);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Figures out the Provider and ConnectionString from either a connection string
        /// name in a config file or full  ConnectionString and provider.
        /// </summary>
        /// <param name="connectionString">Config file connection name or full connection string</param>
        /// <param name="providerName">optional provider name. If not passed with a connection string is considered Sql Server</param>
        /// <param name="factory">optional provider factory. Use for .NET Core to pass actual provider instance since DbproviderFactories doesn't exist</param>
        public static ConnectionStringInfo GetConnectionStringInfo(string connectionString, string providerName = null, DbProviderFactory factory = null)
        {
            var info = new ConnectionStringInfo();

            if (string.IsNullOrEmpty(connectionString))
            {
                throw new InvalidOperationException(Resources.AConnectionStringMustBePassedToTheConstructor);
            }

            if (!connectionString.Contains("="))
            {
#if NETFULL
                connectionString = RetrieveConnectionStringFromConfig(connectionString, info);
#else
                throw new ArgumentException("Connection string names are not supported with .NET Standard. Please use a full connectionstring.");
#endif
            }
            else
            {
                info.Provider = factory;

                if (factory == null)
                {
                    if (providerName == null)
                    {
                        providerName = DefaultProviderName;
                    }

                    // TODO: DbProviderFactories This should get fixed by release of .NET 2.0
#if NETFULL
                    info.Provider = DbProviderFactories.GetFactory(providerName);
#else
                    info.Provider = SqlClientFactory.Instance;
#endif
                }
            }

            info.ConnectionString = connectionString;

            return(info);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Retrieves a connection string from the Connection Strings configuration settings
        /// </summary>
        /// <param name="connectionStringName"></param>
        /// <param name="info"></param>
        /// <exception cref="InvalidOperationException">Throws when connection string doesn't exist</exception>
        /// <returns></returns>
        public static string RetrieveConnectionStringFromConfig(string connectionStringName, ConnectionStringInfo info)
        {
            // it's a connection string entry
            var connInfo = ConfigurationManager.ConnectionStrings[connectionStringName];

            if (connInfo != null)
            {
                if (!string.IsNullOrEmpty(connInfo.ProviderName))
                {
                    info.Provider = DbProviderFactories.GetFactory(connInfo.ProviderName);
                }
                else
                {
                    info.Provider = DbProviderFactories.GetFactory(DefaultProviderName);
                }

                connectionStringName = connInfo.ConnectionString;
            }
            else
            {
                throw new InvalidOperationException(Resources.InvalidConnectionStringName + ": " + connectionStringName);
            }
            return(connectionStringName);
        }