Пример #1
0
        internal void ScanConnections(SqlCeToolboxPackage package)
        {
            var          dte       = package.GetServiceHelper(typeof(DTE)) as DTE2;
            var          helper    = RepositoryHelper.CreateEngineHelper(DatabaseType.SQLCE40);
            EnvDteHelper dteHelper = new EnvDteHelper();
            var          list      = dteHelper.GetSqlCeFilesInActiveSolution(dte);

            foreach (var path in list)
            {
                if (File.Exists(path))
                {
                    bool         versionFound = false;
                    SQLCEVersion version      = SQLCEVersion.SQLCE20;
                    try
                    {
                        version      = helper.DetermineVersion(path);
                        versionFound = true;
                    }
                    catch
                    {
                        // ignored
                    }
                    string connectionString = string.Format("Data Source={0}", path);
                    if (versionFound)
                    {
                        if (version == SQLCEVersion.SQLCE35)
                        {
                            SaveDataConnection(connectionString, DatabaseType.SQLCE35, package);
                        }
                        else if (version == SQLCEVersion.SQLCE40)
                        {
                            SaveDataConnection(connectionString, DatabaseType.SQLCE40, package);
                        }
                    }
                    else
                    {
                        var dbInfo = new DatabaseInfo()
                        {
                            DatabaseType     = DatabaseType.SQLite,
                            ConnectionString = connectionString
                        };
                        try
                        {
                            using (var repo = Helpers.RepositoryHelper.CreateRepository(dbInfo))
                            {
                                repo.GetAllTableNames();
                            }
                            SaveDataConnection(connectionString, DatabaseType.SQLite, package);
                        }
                        catch
                        {
                            // ignored
                        }
                    }
                }
            }
        }
        static void button_Click(object sender, RoutedEventArgs e)
        {
            var item = sender as Button;

            if (item != null)
            {
                EnvDteHelper.LaunchUrl(item.Tag as string);
            }
        }
Пример #3
0
        public static List <TableInformationModel> GetTablesFromRepository(DatabaseInfo dbInfo, bool includeViews = false)
        {
            if (dbInfo.DataConnection != null)
            {
                dbInfo.DataConnection.Open();
                dbInfo.ConnectionString = DataProtection.DecryptString(dbInfo.DataConnection.EncryptedConnectionString);
            }

            if (dbInfo.DatabaseType == DatabaseType.Npgsql)
            {
                return(EnvDteHelper.GetNpgsqlTableNames(dbInfo.ConnectionString, includeViews));
            }

            if (dbInfo.DatabaseType == DatabaseType.Mysql)
            {
                return(EnvDteHelper.GetMysqlTableNames(dbInfo.ConnectionString, includeViews));
            }

            if (dbInfo.DatabaseType == DatabaseType.Oracle)
            {
                return(EnvDteHelper.GetOracleTableNames(dbInfo.ConnectionString, includeViews));
            }

            using (var repository = RepositoryHelper.CreateRepository(dbInfo))
            {
                var allPks    = repository.GetAllPrimaryKeys();
                var tableList = repository.GetTableNamesForExclusion();
                var tables    = new List <TableInformationModel>();

                foreach (var table in tableList)
                {
                    var hasPrimaryKey = allPks.Any(m => m.TableName == table.TableName);
                    var name          = string.IsNullOrEmpty(table.Schema)
                        ? table.TableName
                        : $"[{table.Schema}].[{table.Name}]";

                    var info = new TableInformationModel(name, includeViews ? true : hasPrimaryKey, includeViews ? !hasPrimaryKey : false);
                    tables.Add(info);
                }

                if (includeViews)
                {
                    var views = repository.GetAllViews();
                    foreach (var view in views)
                    {
                        var info = new TableInformationModel(view.ViewName, true, true);
                        tables.Add(info);
                    }
                }

                return(tables.OrderBy(l => l.Name).ToList());
            }
        }
        internal static string SendError(Exception ex, DatabaseType dbType, bool report = true)
        {
            if (ex != null)
            {
                var dontTrack = ex.GetType().Name == "SqlCeException" ||
                                ex is SqlException ||
                                ex is SQLiteException;

                if (!dontTrack)
                {
                    Telemetry.TrackException(ex);
                }
                EnvDteHelper.ShowError(CreateEngineHelper(dbType).FormatError(ex));
            }
            return(string.Empty);
        }