private static void AddDatasourcesFromMruList(ProviderDataSources datasources, MruConnections mruConnections)
        {
            ProviderType providerId = datasources.ProviderType;
            Datasources  provider   = mruConnections.FindDatasources(providerId);

            if (provider == null)
            {
                return;
            }

            if (provider.Datasource == null || provider.Datasource.Count == 0)
            {
                return;
            }

            foreach (Datasource datasource in provider.Datasource)
            {
                if (!ContainsDatasource(datasources, datasource.Address))
                {
                    datasources.Add(datasource);
                }
            }
        }
        /// <summary>
        /// Update the most recently used connection store with the latest parameters used.
        /// </summary>
        /// <param name="mruConnections">The most recently used connection store.</param>
        /// <param name="mruParameter">The most recently connection parameter used.</param>
        /// <returns><c>true</c> if the store was update. <c>false</c> if the store is up to date.</returns>
        public static bool SetMruDbConnectionParameter(MruConnections mruConnections, DbConnectionParameter mruParameter)
        {
            if (mruParameter == null)
            {
                return(false);
            }

            DbConnectionParameter currentMruParameter = MruDbConnectionParameterAdapter.GetMruDbConnectionParameter(mruConnections);

            if (Object.Equals(currentMruParameter, mruParameter))
            {
                return(false);
            }

            DatasourcesList newMruDatasources = new DatasourcesList();

            if (mruParameter.Provider != ProviderType.Undefined)
            {
                Datasources newFirstDatasources = new Datasources()
                {
                    Provider = mruParameter.Provider
                };
                ProviderDataSources datasources = new ProviderDataSources(mruParameter.Provider);
                if (!String.IsNullOrEmpty(mruParameter.DatasourceAddress))
                {
                    Datasource newFirstDatasource = new Datasource()
                    {
                        Address = mruParameter.DatasourceAddress,
                        Comment = mruParameter.DatasourceComment
                    };
                    datasources.Add(newFirstDatasource);

                    AddCatalogs(newFirstDatasource, mruConnections, mruParameter);
                    AddAuthentications(newFirstDatasource, mruConnections, mruParameter);
                    AddDatasourcesFromMruList(datasources, mruConnections);
                }
                newFirstDatasources.Datasource = datasources;

                newMruDatasources.Add(newFirstDatasources);
            }

            // Add all previously used datasources
            IEnumerable <Datasources> otherDatasources = mruConnections.Datasources;

            foreach (Datasources mruDatasources in otherDatasources)
            {
                if (newMruDatasources.Count >= MaxMruEntries)
                {
                    break;
                }

                if (newMruDatasources.Contains(mruDatasources))
                {
                    continue;
                }

                newMruDatasources.Add(mruDatasources);
            }

            mruConnections.Datasources = newMruDatasources;

            return(true);
        }