Esempio n. 1
0
        internal Dictionary <string, DatabaseConnectionModel> GetDataConnections(EFCorePowerToolsPackage package)
        {
            var credentialStore = new CredentialStore();

            // http://www.mztools.com/articles/2007/MZ2007018.aspx
            Dictionary <string, DatabaseConnectionModel> databaseList = new Dictionary <string, DatabaseConnectionModel>();
            var  dataExplorerConnectionManager = package.GetService <IVsDataExplorerConnectionManager>();
            Guid providerSqLite        = new Guid(EFCorePowerTools.Shared.Resources.SQLiteProvider);
            Guid providerSqlitePrivate = new Guid(EFCorePowerTools.Shared.Resources.SQLitePrivateProvider);
            Guid providerNpgsql        = new Guid(Resources.NpgsqlProvider);
            Guid providerMysql         = new Guid(Resources.MysqlVSProvider);
            Guid providerOracle        = new Guid(Resources.OracleProvider);

            if (dataExplorerConnectionManager?.Connections?.Values != null)
            {
                foreach (var connection in dataExplorerConnectionManager.Connections.Values)
                {
                    try
                    {
                        var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString);
                        var info = new DatabaseConnectionModel()
                        {
                            ConnectionName   = connection.DisplayName,
                            DatabaseType     = DatabaseType.Undefined,
                            ConnectionString = sConnectionString,
                            DataConnection   = connection.Connection,
                        };

                        var objProviderGuid = connection.Provider;

                        if (objProviderGuid == providerSqLite ||
                            objProviderGuid == providerSqlitePrivate)
                        {
                            info.DatabaseType = DatabaseType.SQLite;
                        }
                        if (objProviderGuid == new Guid(Resources.SqlServerDotNetProvider) ||
                            objProviderGuid == providerNpgsql)
                        {
                            info.DatabaseType = objProviderGuid == providerNpgsql ? DatabaseType.Npgsql : DatabaseType.SQLServer;
                        }

                        // This provider depends on https://dev.mysql.com/downloads/windows/visualstudio/
                        if (objProviderGuid == providerMysql)
                        {
                            info.DatabaseType = DatabaseType.Mysql;
                        }

                        if (objProviderGuid == providerOracle)
                        {
                            info.DatabaseType = DatabaseType.Oracle;
                        }

                        if (info.DatabaseType != DatabaseType.Undefined &&
                            !databaseList.ContainsKey(sConnectionString))
                        {
                            databaseList.Add(sConnectionString, info);
                        }
                    }
                    catch (Exception ex)
                    {
                        package.LogError(new List <string> {
                            ex.Message
                        }, ex);
                    }
                }
            }

            try
            {
                foreach (var connection in credentialStore.GetStoredDatabaseConnections())
                {
                    databaseList.Add(connection.ConnectionName, connection);
                }
            }
            catch (Exception ex)
            {
                package.LogError(new List <string> {
                    ex.Message
                }, ex);
            }

            return(databaseList);
        }
 public ReverseEngineerHandler(EFCorePowerToolsPackage package)
 {
     _package = package;
 }
Esempio n. 3
0
        internal static Dictionary <string, DatabaseInfo> GetDataConnections(EFCorePowerToolsPackage package)
        {
            // http://www.mztools.com/articles/2007/MZ2007018.aspx
            Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>();
            var  dataExplorerConnectionManager             = package.GetService <IVsDataExplorerConnectionManager>();
            Guid provider40            = new Guid(EFCorePowerTools.Shared.Resources.SqlCompact40Provider);
            Guid provider40Private     = new Guid(EFCorePowerTools.Shared.Resources.SqlCompact40PrivateProvider);
            Guid providerSqLite        = new Guid(EFCorePowerTools.Shared.Resources.SQLiteProvider);
            Guid providerSqlitePrivate = new Guid(EFCorePowerTools.Shared.Resources.SQLitePrivateProvider);
            Guid providerNpgsql        = new Guid(Resources.NpgsqlProvider);
            Guid providerMysql         = new Guid(Resources.MysqlVSProvider);

            bool isV40Installed = RepositoryHelper.IsV40Installed() &&
                                  (DdexProviderIsInstalled(provider40) || DdexProviderIsInstalled(provider40Private));

            if (dataExplorerConnectionManager != null)
            {
                foreach (var connection in dataExplorerConnectionManager.Connections.Values)
                {
                    try
                    {
                        var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString);
                        var info = new DatabaseInfo()
                        {
                            Caption            = connection.DisplayName,
                            FromServerExplorer = true,
                            DatabaseType       = DatabaseType.SQLCE35,
                            ConnectionString   = sConnectionString
                        };
                        var objProviderGuid = connection.Provider;

                        if ((objProviderGuid == provider40 && isV40Installed ||
                             objProviderGuid == provider40Private && isV40Installed) &&
                            !sConnectionString.Contains("Mobile Device"))
                        {
                            info.DatabaseType = DatabaseType.SQLCE40;
                        }
                        if (objProviderGuid == providerSqLite ||
                            objProviderGuid == providerSqlitePrivate)
                        {
                            info.DatabaseType = DatabaseType.SQLite;
                        }
                        if (objProviderGuid == new Guid(Resources.SqlServerDotNetProvider) ||
                            objProviderGuid == providerNpgsql)
                        {
                            info.DatabaseType = objProviderGuid == providerNpgsql ? DatabaseType.Npgsql : DatabaseType.SQLServer;
                        }

                        // This provider depends on https://dev.mysql.com/downloads/windows/visualstudio/
                        if (objProviderGuid == providerMysql)
                        {
                            info.DatabaseType = DatabaseType.Mysql;
                        }

                        if (info.DatabaseType != DatabaseType.SQLCE35 &&
                            !databaseList.ContainsKey(sConnectionString))
                        {
                            databaseList.Add(sConnectionString, info);
                        }
                    }
                    catch (KeyNotFoundException)
                    {
                    }
                    catch (NullReferenceException)
                    {
                    }
                }
            }
            return(databaseList);
        }
 public ReverseEngineerHandler(EFCorePowerToolsPackage package)
 {
     _package = package;
     reverseEngineerHelper = new ReverseEngineerHelper();
 }
Esempio n. 5
0
 public ModelAnalyzerHandler(EFCorePowerToolsPackage package)
 {
     _package = package;
 }
 public DgmlNugetHandler(EFCorePowerToolsPackage package)
 {
     _package = package;
 }
Esempio n. 7
0
 public ServerDgmlHandler(EFCorePowerToolsPackage package)
 {
     _package = package;
 }