コード例 #1
0
 /// <summary>
 /// API constructor, instead use <see cref="DiscoveredServer.ExpectDatabase"/> instead.
 /// </summary>
 /// <param name="server"></param>
 /// <param name="database"></param>
 /// <param name="querySyntaxHelper"></param>
 internal DiscoveredDatabase(DiscoveredServer server, string database, IQuerySyntaxHelper querySyntaxHelper)
 {
     Server             = server;
     _database          = database;
     _querySyntaxHelper = querySyntaxHelper;
     Helper             = server.Helper.GetDatabaseHelper();
 }
コード例 #2
0
        private void UpdateTablesListAsync(object sender, DoWorkEventArgs e)
        {
            var builder  = (DbConnectionStringBuilder)((object[])e.Argument)[0];
            var database = (string)((object[])e.Argument)[1];

            var discoveredDatabase = new DiscoveredServer(builder).ExpectDatabase(database);
            IDiscoveredDatabaseHelper databaseHelper = discoveredDatabase.Helper;

            _workerRefreshTablesToken = new CancellationTokenSource();

            var syntaxHelper = discoveredDatabase.Server.GetQuerySyntaxHelper();

            try
            {
                using (var con = discoveredDatabase.Server.GetConnection())
                {
                    var openTask = con.OpenAsync(_workerRefreshTablesToken.Token);
                    openTask.Wait(_workerRefreshTablesToken.Token);

                    List <DiscoveredTable> result = new List <DiscoveredTable>();

                    result.AddRange(databaseHelper.ListTables(discoveredDatabase, syntaxHelper, con, database, true));
                    result.AddRange(databaseHelper.ListTableValuedFunctions(discoveredDatabase, syntaxHelper, con, database));

                    _listTablesAsyncResult = result;
                }
            }
            catch (OperationCanceledException)//user cancels
            {
                _listTablesAsyncResult = new List <DiscoveredTable>();
            }
        }