コード例 #1
0
ファイル: DBProvider.cs プロジェクト: psulek/doemd
        private string GetSystemEngineProvider()
        {
            //string xtensiveProvider = this.connectionInfo.InternalInfo.Provider;
            //var mapping = ProtocolMappings[this.connectionInfo.StorageEngineKey];
            StorageEngineAdoNetMapping mapping = GetProtocolMapping(this.connectionInfo.StorageEngine);
            var adoNetInvariantName            = mapping.AdoNetKey;

            return(DBEngineUtils.GetSystemDBProviders().SingleOrDefault(
                       dbEngineName => Util.StringEqual(dbEngineName, adoNetInvariantName, true)));
        }
コード例 #2
0
ファイル: DBProvider.cs プロジェクト: psulek/doemd
        private bool InternalRefresh(Server server, LoadingMode loadMode, bool clearErrors)
        {
            if (clearErrors)
            {
                ClearLastErrors();
            }

            bool result = Util.StringEqual(this.connectionInfo.ServerName, server.Name, true);

            if (!result)
            {
                if (this.IsConnected)
                {
                    this.Disconnect();
                }
                this.connectionInfo.ServerName = server.Name;

                result = InternalReconnect(true, this.connectionInfo);
            }


            if (result)
            {
                EnsureConnected();

                List <Database> databases = new List <Database>();

                string systemEngineProvider = GetSystemEngineProvider();

                var databaseList = DBEngineUtils.GetDatabases(systemEngineProvider, server.Name, this.connectionInfo.UserID, this.connectionInfo.Password);

                foreach (var database in databaseList.OrderBy(s => s))
                {
                    Database db = new Database(database, server);
                    databases.Add(db);
                }

                server.Databases = new DatabaseCollection(databases);

                if (loadMode == LoadingMode.RecursiveAllLevels)
                {
                    EnsureExtractedCatalog();

                    foreach (Database database in server.Databases)
                    {
                        InternalRefresh(database, loadMode, false);
                    }
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: DBProvider.cs プロジェクト: psulek/doemd
        public ServerCollection GetAllServers(LoadingMode loadingMode)
        {
            ClearLastErrors();
            EnsureConnected();

            ServerCollection servers = null;

            try
            {
                string systemEngineProvider = GetSystemEngineProvider();

                var           dataSources = DBEngineUtils.GetDataSources(systemEngineProvider);
                List <Server> items       = new List <Server>();
                foreach (var item in dataSources.OrderBy(info => info.Host))
                {
                    items.Add(new Server
                    {
                        Name        = item.Host,
                        IsClustered = item.IsClustered,
                        Version     = item.Version
                    });
                }

                items.Insert(0, new Server("localhost"));

                servers = new ServerCollection(items);

                if (loadingMode == LoadingMode.RecursiveAllLevels)
                {
                    foreach (Server server in servers)
                    {
                        InternalRefresh(server, loadingMode, false);
                    }
                }
            }
            catch (Exception e)
            {
                UpdateLastError(e);
            }

            return(servers);
        }