internal static bool DDEXProviderIsInstalled(Guid id) { IVsDataProvider provider = null; var objIVsDataProviderManager = SqlCeToolboxPackage.GetGlobalService(typeof(IVsDataProviderManager)) as IVsDataProviderManager; return(objIVsDataProviderManager.Providers.TryGetValue(id, out provider)); }
public static string PromptForConnectionString(SqlCeToolboxPackage package) { #if SSMS DataSource sqlDataSource = new DataSource("MicrosoftSqlServer", "Microsoft SQL Server"); sqlDataSource.Providers.Add(DataProvider.SqlDataProvider); DataConnectionDialog dcd = new DataConnectionDialog(); dcd.DataSources.Add(sqlDataSource); dcd.SelectedDataProvider = DataProvider.SqlDataProvider; dcd.SelectedDataSource = sqlDataSource; if (DataConnectionDialog.Show(dcd) == System.Windows.Forms.DialogResult.OK) { return dcd.ConnectionString; } #else var databaseList = GetDataConnections(package, true, true); PickServerDatabaseDialog psd = new PickServerDatabaseDialog(databaseList); bool? res = psd.ShowModal(); if (res.HasValue && res.Value && (psd.SelectedDatabase.Value != null)) { return psd.SelectedDatabase.Value.ConnectionString; } #endif return null; }
internal static void RemoveDataConnection(SqlCeToolboxPackage package, string connectionString, Guid provider) { var removals = new List <IVsDataExplorerConnection>(); var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; foreach (var connection in dataExplorerConnectionManager.Connections.Values) { var objProviderGuid = connection.Provider; if ((objProviderGuid == new Guid(Resources.SqlCompact35Provider)) || (objProviderGuid == new Guid(Resources.SqlCompact40Provider))) { if (Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString) == connectionString) { removals.Add(connection); } } } for (int i = removals.Count - 1; i >= 0; i--) { try { dataExplorerConnectionManager.RemoveConnection(removals[i]); } catch (ArgumentException) { } catch (IndexOutOfRangeException) { } } }
private static uint GetWin32Color(int color) { uint win32Color; var shell = SqlCeToolboxPackage.GetGlobalService(typeof(SVsUIShell)) as IVsUIShell2; shell.GetVSSysColorEx(color, out win32Color); return(win32Color); }
internal static void SaveDataConnection(SqlCeToolboxPackage package, string encryptedConnectionString, DatabaseType dbType, Guid provider) { if (package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) is IVsDataExplorerConnectionManager dataExplorerConnectionManager) { var savedName = GetFileName(DataProtection.DecryptString(encryptedConnectionString), dbType); dataExplorerConnectionManager.AddConnection(savedName, provider, encryptedConnectionString, true); } }
public static void LaunchUrl(string url) { var dte = SqlCeToolboxPackage.GetGlobalService(typeof(EnvDTE.DTE)) as EnvDTE.DTE; if (dte != null) { dte.ItemOperations.Navigate(url, vsNavigateOptions.vsNavigateOptionsDefault); } }
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 } } } } }
internal static void SaveDataConnection(SqlCeToolboxPackage package, string connectionString, string testString, DatabaseType dbType, Guid provider, bool encryptedString = true) { var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; if (dataExplorerConnectionManager != null) { string savedName = GetFileName(testString, dbType); dataExplorerConnectionManager.AddConnection(savedName, provider, connectionString, encryptedString); } }
public static string PromptForConnectionString(SqlCeToolboxPackage package) { var databaseList = DataConnectionHelper.GetDataConnections(package, true, true); PickServerDatabaseDialog psd = new PickServerDatabaseDialog(databaseList); bool?res = psd.ShowModal(); if (res.HasValue && res.Value == true && (psd.SelectedDatabase.Value != null)) { return(psd.SelectedDatabase.Value.ConnectionString); } return(null); }
internal static void SaveDataConnection(string connectionString, DatabaseType dbType, SqlCeToolboxPackage package) { var storeDbType = GetPreferredDatabaseType(); var helper = CreateEngineHelper(storeDbType); string path = CreateEngineHelper(dbType).PathFromConnectionString(connectionString); helper.SaveDataConnection(CreateStore(storeDbType), connectionString, path, dbType.GetHashCode()); if (package.VsSupportsSimpleDdex4Provider() && dbType == DatabaseType.SQLCE40) { SaveDataConnection(package, DataProtection.EncryptString(connectionString), dbType, new Guid(Resources.SqlCompact40PrivateProvider)); } }
private bool TryGetInitialPath(SqlCeToolboxPackage package, out string path) { var dteHelper = new EnvDteHelper(); try { path = dteHelper.GetInitialFolder(); return(true); } catch { path = null; return(false); } }
// <summary> // Helper method to show a message box within the shell. // </summary> // <param name="messageText">Text to show.</param> // <param name="f1Keyword">F1-keyword.</param> // <param name="messageButtons">Buttons which should appear in the dialog.</param> // <param name="defaultButton">Default button (invoked when user presses return).</param> // <param name="messageIcon">Icon (warning, error, informational, etc.) to display</param> // <returns>result corresponding to the button clicked by the user.</returns> private static DialogResult ShowMessageBox( string messageText, string f1Keyword, OLEMSGBUTTON messageButtons, OLEMSGDEFBUTTON defaultButton, OLEMSGICON messageIcon) { var result = 0; var uiShell = (IVsUIShell)SqlCeToolboxPackage.GetGlobalService(typeof(SVsUIShell)); if (uiShell != null) { var rclsidComp = Guid.Empty; uiShell.ShowMessageBox( 0, ref rclsidComp, Resources.App, messageText, f1Keyword, 0, messageButtons, defaultButton, messageIcon, 0, out result); } return((DialogResult)result); }
private bool TryGetInitialPath(SqlCeToolboxPackage package, out string path) { var dte = package.GetServiceHelper(typeof(EnvDTE.DTE)) as EnvDTE.DTE; EnvDTEHelper dteHelper = new EnvDTEHelper(); try { path = dteHelper.GetInitialFolder(dte); return(true); } catch { path = null; return(false); } }
private void AddCeDatabase(DatabaseType dbType) { try { var dialog = new ConnectionDialog(); string path; if (TryGetInitialPath(_package, out path)) { dialog.InitialPath = path; } dialog.DbType = dbType; dialog.ShowDdexInfo = _package.VsSupportsSimpleDdex4Provider() || _package.VsSupportsSimpleDdex35Provider(); dialog.CouldSupportPrivateProvider = (dbType == DatabaseType.SQLCE40 && (SqlCeToolboxPackage.VisualStudioVersion >= new Version(12, 0))) || (dbType == DatabaseType.SQLCE35 && SqlCeToolboxPackage.VsSupportsEf6()); var result = dialog.ShowModal(); if (!result.HasValue || result.Value != true) { return; } if (string.IsNullOrWhiteSpace(dialog.ConnectionString)) { return; } DataConnectionHelper.SaveDataConnection(dialog.ConnectionString, dbType, _package); var control = _parentWindow.Content as ExplorerControl; if (control != null) { control.BuildDatabaseTree(); } DataConnectionHelper.LogUsage("DatabasesAddCeDatabase"); } catch (Exception ex) { DataConnectionHelper.SendError(ex, dbType); } }
public TableMenuItem(SqlCeToolboxPackage package) { _package = package; _handler = new BaseCommandHandler(); Text = "Script table..."; }
private MenuItem BuildAddCe35DatabaseMenuItem(DatabaseMenuCommandParameters databaseMenuCommandParameters, DatabasesMenuCommandsHandler dcmd, SqlCeToolboxPackage pkg, bool ver35IsInstalled) { // Add 3.5 database menu var addCe35DatabaseCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.AddCe35Database); var addCe35DatabaseMenuItem = new MenuItem { Header = "Add SQL Server Compact 3.5 Connection...", Icon = ImageHelper.GetImageFromResource("../resources/AddDatabase_16x.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; if (pkg != null && pkg.VsSupportsDdex35()) { addCe35DatabaseMenuItem.CommandBindings.Add(addCe35DatabaseCommandBinding); addCe35DatabaseMenuItem.IsEnabled = ver35IsInstalled; } else { var addCe3511DatabaseCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.AddPrivateCe35Database); addCe35DatabaseMenuItem.CommandBindings.Add(addCe3511DatabaseCommandBinding); addCe35DatabaseMenuItem.IsEnabled = ver35IsInstalled; } return(addCe35DatabaseMenuItem); }
internal void ScanConnections(SqlCeToolboxPackage package) { var dte = package.GetServiceHelper(typeof(EnvDTE.DTE)) as EnvDTE.DTE; var helper = Helpers.DataConnectionHelper.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 {} 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(); dbInfo.DatabaseType = DatabaseType.SQLite; dbInfo.ConnectionString = connectionString; try { using (var repo = CreateRepository(dbInfo)) { repo.GetAllTableNames(); } SaveDataConnection(connectionString, DatabaseType.SQLite, package); } catch { } } } } }
internal static void SaveDataConnection(SqlCeToolboxPackage package, string connectionString, string testString, DatabaseType dbType, Guid provider, bool encryptedString = true) { var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; if (dataExplorerConnectionManager != null) { string savedName = GetFileName(testString, dbType); dataExplorerConnectionManager.AddConnection(savedName, provider, connectionString, encryptedString); } }
internal static void SaveDataConnection(string connectionString, DatabaseType dbType, SqlCeToolboxPackage package) { var storeDbType = GetPreferredDatabaseType(); var helper = CreateEngineHelper(storeDbType); string path = CreateEngineHelper(dbType).PathFromConnectionString(connectionString); helper.SaveDataConnection(CreateStore(storeDbType), connectionString, path, dbType.GetHashCode()); if (package.VSSupportsSimpleDDEX35Provider() && dbType == DatabaseType.SQLCE35) { SaveDataConnection(package, connectionString, connectionString, dbType, new Guid(Resources.SqlCompact35PrivateProvider), false); } if (package.VSSupportsSimpleDDEX4Provider() && dbType == DatabaseType.SQLCE40) { SaveDataConnection(package, connectionString, connectionString, dbType, new Guid(Resources.SqlCompact40PrivateProvider), false); } }
public DacFxHelper(SqlCeToolboxPackage package) { _package = package; }
public DatabaseMenuItem(SqlCeToolboxPackage package) { _package = package; _handler = new SqlServerDatabaseMenuCommandsHandler(_package); Text = "Script database..."; }
public static string PromptForConnectionString(SqlCeToolboxPackage package) { var databaseList = DataConnectionHelper.GetDataConnections(package, true, true); PickServerDatabaseDialog psd = new PickServerDatabaseDialog(databaseList); bool? res = psd.ShowModal(); if (res.HasValue && res.Value == true && (psd.SelectedDatabase.Value != null)) { return psd.SelectedDatabase.Value.ConnectionString; } return null; }
public ObjectExplorerManager(SqlCeToolboxPackage package) { _package = package; }
internal static Dictionary<string, DatabaseInfo> GetDataConnections(SqlCeToolboxPackage package, bool includeServerConnections, bool serverConnectionsOnly) { // http://www.mztools.com/articles/2007/MZ2007018.aspx Dictionary<string, DatabaseInfo> databaseList = new Dictionary<string, DatabaseInfo>(); var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; //Test code... //var objIVsDataProviderManager = package.GetServiceHelper(typeof(IVsDataProviderManager)) as IVsDataProviderManager; //var objIVsDataConnectionManager = package.GetServiceHelper(typeof(IVsDataConnectionManager)) as IVsDataConnectionManager; //var objIVsDataSourceManager = package.GetServiceHelper(typeof(IVsDataSourceManager)) as IVsDataSourceManager; //IVsDataProvider objIVsDataProvider; //foreach (var objIVsDataSource in objIVsDataSourceManager.Sources) //{ // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.DisplayName); // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.Guid.ToString()); // //foreach (var objProviderGuid in objIVsDataSource.GetProviders()) // //{ // // objIVsDataProvider = objIVsDataProviderManager.GetDataProvider(objProviderGuid); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.DisplayName); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.Guid.ToString()); // //} //} // End test code Guid provider35 = new Guid(Resources.SqlCompact35Provider); Guid provider40 = new Guid(Resources.SqlCompact40Provider); Guid providerSQLite = new Guid(Resources.SQLiteProvider); bool isV35Installed = IsV35Installed() && DDEXProviderIsInstalled(provider35); bool isV40Installed = IsV40Installed() && DDEXProviderIsInstalled(provider40); if (dataExplorerConnectionManager != null) { foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var objProviderGuid = connection.Provider; if (!serverConnectionsOnly) { if ((objProviderGuid == provider35 && isV35Installed) || (objProviderGuid == provider40 && isV40Installed) ) { DatabaseType dbType = DatabaseType.SQLCE40; if (objProviderGuid == provider35) dbType = DatabaseType.SQLCE35; var serverVersion = "4.0"; if (dbType == DatabaseType.SQLCE35) serverVersion = "3.5"; var sConnectionString = Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString); if (!sConnectionString.Contains("Mobile Device")) { DatabaseInfo info = new DatabaseInfo(); info.Caption = connection.DisplayName; info.FromServerExplorer = true; info.DatabaseType = dbType; info.ServerVersion = serverVersion; info.ConnectionString = sConnectionString; info.FileIsMissing = IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) databaseList.Add(sConnectionString, info); } } if (objProviderGuid == providerSQLite) { DatabaseType dbType = DatabaseType.SQLite; var sConnectionString = Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString); DatabaseInfo info = new DatabaseInfo(); info.Caption = connection.DisplayName; info.FromServerExplorer = true; info.DatabaseType = dbType; info.ServerVersion = "3.9"; info.ConnectionString = sConnectionString; info.FileIsMissing = IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) databaseList.Add(sConnectionString, info); } } if (includeServerConnections && objProviderGuid == new Guid(Resources.SqlServerDotNetProvider)) { var sConnectionString = Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString); var info = new DatabaseInfo(); info.Caption = connection.DisplayName; info.FromServerExplorer = true; info.DatabaseType = DatabaseType.SQLServer; info.ServerVersion = string.Empty; info.ConnectionString = sConnectionString; if (!databaseList.ContainsKey(sConnectionString)) databaseList.Add(sConnectionString, info); } } catch (KeyNotFoundException) { continue; } catch (NullReferenceException) { continue; } } } return databaseList; }
public DatabaseMenuCommandsHandler(ExplorerToolWindow parent) { _parentWindow = parent; package = _parentWindow.Package as SqlCeToolboxPackage; }
public DatabasesMenuCommandsHandler(ExplorerToolWindow parent) { _parentWindow = parent; package = _parentWindow.Package as SqlCeToolboxPackage; }
internal void ValidateConnections(SqlCeToolboxPackage package) { var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; var removals = new List <IVsDataExplorerConnection>(); if (dataExplorerConnectionManager != null) { foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var objProviderGuid = connection.Provider; if ( (objProviderGuid == new Guid(Resources.SqlCompact35Provider) && RepositoryHelper.IsV35Installed()) || (objProviderGuid == new Guid(Resources.SqlCompact40Provider) && RepositoryHelper.IsV40Installed()) || (objProviderGuid == new Guid(Resources.SqlCompact40PrivateProvider) && RepositoryHelper.IsV40Installed() || (objProviderGuid == new Guid(Resources.SqlitePrivateProvider) && IsSqLiteDbProviderInstalled()) )) { connection.Connection.Open(); connection.Connection.Close(); } } catch (Exception ex) { if (ex.GetType() == typeof(SQLiteException)) { removals.Add(connection); } if (ex.GetType().Name == "SqlCeException") { removals.Add(connection); } if (ex.GetType().Name == "SqlCeInvalidDatabaseFormatException") { removals.Add(connection); } if (ex.GetType() == typeof(ArgumentException)) { removals.Add(connection); } if (ex.GetType() == typeof(KeyNotFoundException)) { removals.Add(connection); } throw; } } for (int i = removals.Count - 1; i >= 0; i--) { try { dataExplorerConnectionManager.RemoveConnection(removals[i]); } catch (ArgumentException) { } catch (IndexOutOfRangeException) { } catch (KeyNotFoundException) { } } } var ownConnections = GetOwnDataConnections(); foreach (var item in ownConnections) { try { using (Helpers.RepositoryHelper.CreateRepository(item.Value)) { } } catch (Exception ex) { if (ex.GetType().Name == "SqlCeException" || ex.GetType().Name == "SqlCeInvalidDatabaseFormatException") { RemoveDataConnection(item.Value.ConnectionString); } throw; } } }
private bool TryGetInitialPath(SqlCeToolboxPackage package, out string path) { var dte = package.GetServiceHelper(typeof(EnvDTE.DTE)) as EnvDTE.DTE; EnvDTEHelper dteHelper = new EnvDTEHelper(); try { path = dteHelper.GetInitialFolder(dte); return true; } catch { path = null; return false; } }
public DatabaseContextMenu(DatabaseMenuCommandParameters databaseMenuCommandParameters, ExplorerToolWindow parent) { var dbType = databaseMenuCommandParameters.DatabaseInfo.DatabaseType; var isSqlCe = dbType == DatabaseType.SQLCE35 || dbType == DatabaseType.SQLCE40; var dcmd = new DatabaseMenuCommandsHandler(parent); var cecmd = new SqlCeDatabaseMenuCommandsHandler(parent); Items.Add(BuildShowSqlEditorMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(BuildCreateTableMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); var scriptDatabaseRootMenuItem = new MenuItem { Header = "Script Database", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), }; // Database scripting items var scriptDatabaseCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.ScriptDatabase); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaDataMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(BuildScriptAzureSchemaDataMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); } if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(BuildScriptSqliteSchemaDataMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); } if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaDataBlobMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); } scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseDataMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseDataForServerMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); } if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseDiffMenuItem(databaseMenuCommandParameters, dcmd)); } //End Database scripting items Items.Add(scriptDatabaseRootMenuItem); Items.Add(new Separator()); var maintenanceMenuItem = new MenuItem { Header = "Maintenance", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), }; maintenanceMenuItem.Items.Add(BuildPwdMenuItem(databaseMenuCommandParameters, cecmd)); var shrinkMenuItem = BuildShrinkMenuItem(databaseMenuCommandParameters, dcmd); maintenanceMenuItem.Items.Add(shrinkMenuItem); var compactMenuItem = BuildCompactMenuItem(databaseMenuCommandParameters, dcmd); maintenanceMenuItem.Items.Add(compactMenuItem); maintenanceMenuItem.Items.Add(BuildVerifyMenuItem(databaseMenuCommandParameters, cecmd)); maintenanceMenuItem.Items.Add(BuildRepairDeleteMenuItem(databaseMenuCommandParameters, cecmd)); maintenanceMenuItem.Items.Add(BuildRepairRecoverAllMenuItem(databaseMenuCommandParameters, cecmd)); maintenanceMenuItem.Items.Add(BuildRepairRecoverPossibleMenuItem(databaseMenuCommandParameters, cecmd)); if (isSqlCe) { Items.Add(maintenanceMenuItem); Items.Add(new Separator()); } if (dbType == DatabaseType.SQLite) { maintenanceMenuItem.Items.Clear(); compactMenuItem.Header = "Vacuum"; compactMenuItem.ToolTip = "Rebuilds the database file, repacking it into a minimal amount of disk space"; shrinkMenuItem.Header = "Re-index"; shrinkMenuItem.ToolTip = "Deletes and recreates indexes"; maintenanceMenuItem.Items.Add(compactMenuItem); maintenanceMenuItem.Items.Add(shrinkMenuItem); Items.Add(maintenanceMenuItem); Items.Add(new Separator()); } Items.Add(BuildScriptDatabaseExportMenuItem(databaseMenuCommandParameters, dcmd)); if (dbType == DatabaseType.SQLCE35 && DataConnectionHelper.IsV40Installed()) { Items.Add(BuildScriptUpgradeMenuItem(databaseMenuCommandParameters, cecmd)); } Items.Add(new Separator()); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(BuildScriptDatabaseGraphMenuItem(databaseMenuCommandParameters, dcmd)); } Items.Add(BuildDocDatabaseMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); var generateCodeRootMenuItem = new MenuItem { Header = "Generate Code", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), }; #if SSMS #else if (dbType != DatabaseType.SQLCE35) { generateCodeRootMenuItem.Items.Add(BuildEfCoreModelMenuItem(databaseMenuCommandParameters, dcmd)); } #endif if (dbType == DatabaseType.SQLite) { generateCodeRootMenuItem.Items.Add(BuildScriptModelMenuItem(databaseMenuCommandParameters, dcmd)); } if (isSqlCe && SqlCeToolboxPackage.VsSupportsEf6()) { generateCodeRootMenuItem.Items.Add(BuildScriptEfPocoMenuItem(databaseMenuCommandParameters, dcmd)); } #if SSMS #else var scriptDcCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, cecmd.GenerateDataContextInProject); if (isSqlCe) { generateCodeRootMenuItem.Items.Add(BuildScriptDcMenuItem(databaseMenuCommandParameters, scriptDcCommandBinding)); } if (isSqlCe) { generateCodeRootMenuItem.Items.Add(BuildScriptWpdcMenuItem(databaseMenuCommandParameters, scriptDcCommandBinding, dbType)); } if (isSqlCe) { generateCodeRootMenuItem.Items.Add(new Separator()); } #endif var syncFxRootMenuItem = new MenuItem { Header = "Sync Framework Tools", Icon = ImageHelper.GetImageFromResource("../resources/Synchronize_16xLG.png"), }; var isSyncFxInstalled = DataConnectionHelper.IsSyncFx21Installed(); syncFxRootMenuItem.Items.Add(BuildSyncFxProvisionMenuItem(databaseMenuCommandParameters, cecmd, dbType, isSyncFxInstalled)); syncFxRootMenuItem.Items.Add(BuildSyncFxDeprovisionMenuItem(databaseMenuCommandParameters, cecmd, dbType, isSyncFxInstalled)); syncFxRootMenuItem.Items.Add(BuildSyncFxGenerateSnapshotMenuItem(databaseMenuCommandParameters, cecmd, dbType, isSyncFxInstalled)); if (isSqlCe) { generateCodeRootMenuItem.Items.Add(BuildSyncFxMenuItem(databaseMenuCommandParameters, cecmd, dbType, isSyncFxInstalled)); } if (isSqlCe) { generateCodeRootMenuItem.Items.Add(syncFxRootMenuItem); } if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(generateCodeRootMenuItem); } if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(new Separator()); } if (isSqlCe) { Items.Add(BuildAddDescriptionMenuItem(databaseMenuCommandParameters, dcmd)); } Items.Add(BuildGenerateInfoMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); Items.Add(BuildCopyConnectionMenuItem(databaseMenuCommandParameters, cecmd)); if (!databaseMenuCommandParameters.DatabaseInfo.FromServerExplorer) { Items.Add(BuildRenameConnectionMenuItem(databaseMenuCommandParameters, dcmd)); } Items.Add(BuildRemoveCeConnectionMenuItem(databaseMenuCommandParameters, dcmd)); }
public SqlServerDatabaseContextMenu(DatabaseMenuCommandParameters databaseMenuCommandParameters, ExplorerToolWindow parent) { var dcmd = new SqlServerDatabaseMenuCommandsHandler(parent); var dbcmd = new DatabaseMenuCommandsHandler(parent); var isSqlCe40Installed = DataConnectionHelper.IsV40Installed(); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(BuildScriptDatabaseGraphMenuItem(databaseMenuCommandParameters, dcmd)); } if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(new Separator()); } var scriptDatabaseRootMenuItem = new MenuItem { Header = "Script Database", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), }; var toolTip = new ToolTip { Content = "Generate a SQL Server Compact compatible database script from SQL Server 2005+" }; var scriptDatabaseCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.ScriptServerDatabase); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseDataMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaDataMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaDataSqLiteMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaSqLiteMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseSchemaDataBlobMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); Items.Add(scriptDatabaseRootMenuItem); Items.Add(new Separator()); #if SSMS #else if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(BuildEfCoreModelMenuItem(databaseMenuCommandParameters, dbcmd)); } #endif #if VS2010 #else if (SqlCeToolboxPackage.VsSupportsEf6()) { Items.Add(BuildScriptEfPocoDacPacMenuItem(databaseMenuCommandParameters, dcmd)); } #endif if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(new Separator()); } Items.Add(BuildExportServerMenuItem(databaseMenuCommandParameters, dcmd, isSqlCe40Installed)); Items.Add(BuildExportServerToLiteMenuItem(databaseMenuCommandParameters, dcmd)); }
internal static void RemoveDataConnection(SqlCeToolboxPackage package, string connectionString, Guid provider) { var removals = new List<IVsDataExplorerConnection>(); var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; foreach (var connection in dataExplorerConnectionManager.Connections.Values) { var objProviderGuid = connection.Provider; if ((objProviderGuid == new Guid(Resources.SqlCompact35Provider)) || (objProviderGuid == new Guid(Resources.SqlCompact40Provider))) { if (Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString) == connectionString) { removals.Add(connection); } } } for (int i = removals.Count - 1; i >= 0; i--) { try { dataExplorerConnectionManager.RemoveConnection(removals[i]); } catch (ArgumentException) { } catch (IndexOutOfRangeException) { } } }
public async void GenerateEfPocoFromDacPacInProject(object sender, ExecutedRoutedEventArgs e) { EnvDteHelper.LaunchUrl("https://github.com/sjh37/EntityFramework-Reverse-POCO-Code-First-Generator"); var databaseInfo = ValidateMenuInfo(sender); if (databaseInfo == null) { return; } var isEf6 = SqlCeToolboxPackage.VsSupportsEf6(); try { var dte = _package?.GetServiceHelper(typeof(DTE)) as DTE; if (dte == null) { return; } if (dte.Mode == vsIDEMode.vsIDEModeDebug) { EnvDteHelper.ShowError("Cannot generate code while debugging"); return; } var dteH = new EnvDteHelper(); var project = dteH.GetProject(dte); if (project == null) { EnvDteHelper.ShowError("Please select a project in Solution Explorer, where you want the generated code to be placed"); return; } if (dte.Solution.SolutionBuild.BuildState == vsBuildState.vsBuildStateNotStarted) { EnvDteHelper.ShowError("Please build the project before proceeding"); return; } if (isEf6) { if (!dteH.ContainsEf6Reference(project)) { EnvDteHelper.ShowError("Please add the EntityFramework 6.x NuGet package to the project"); return; } } if (!dteH.AllowedProjectKinds.Contains(new Guid(project.Kind))) { EnvDteHelper.ShowError("The selected project type does not support Entity Framework (please let me know if I am wrong)"); return; } if (project.Properties.Item("TargetFrameworkMoniker") == null) { EnvDteHelper.ShowError("The selected project type does not have a TargetFrameworkMoniker"); return; } if (!project.Properties.Item("TargetFrameworkMoniker").Value.ToString().Contains(".NETFramework")) { EnvDteHelper.ShowError("The selected project type does not support .NET Desktop - wrong TargetFrameworkMoniker: " + project.Properties.Item("TargetFrameworkMoniker").Value); return; } var ofd = new OpenFileDialog { Filter = "Dacpac (*.dacpac)|*.dacpac|All Files(*.*)|*.*", CheckFileExists = true, Multiselect = false, ValidateNames = true }; if (ofd.ShowDialog() != true) { return; } var dacPacFileName = ofd.FileName; var connectionStringBuilder = new SqlConnectionStringBuilder { DataSource = @"(localdb)\mssqllocaldb", InitialCatalog = Path.GetFileNameWithoutExtension(dacPacFileName), IntegratedSecurity = true }; var dacFxHelper = new DacFxHelper(_package); await dacFxHelper.RunDacPackageAsync(connectionStringBuilder, dacPacFileName); var prefix = "App"; var configPath = Path.Combine(Path.GetTempPath(), prefix + ".config"); var item = dteH.GetProjectConfig(project); if (item == null) { //Add app.config file to project var cfgSb = new StringBuilder(); cfgSb.AppendLine("<?xml version=\"1.0\" encoding=\"utf-8\" ?>"); cfgSb.AppendLine("<configuration>"); cfgSb.AppendLine("</configuration>"); File.WriteAllText(configPath, cfgSb.ToString(), Encoding.UTF8); item = project.ProjectItems.AddFromFileCopy(configPath); } if (item != null) { AppConfigHelper.WriteConnectionStringToAppConfig("MyDbContext", connectionStringBuilder.ConnectionString, project.FullName, "System.Data.SqlClient", prefix, item.Name); } var dte2 = (DTE2)_package.GetServiceHelper(typeof(DTE)); // ReSharper disable once SuspiciousTypeConversion.Global var solution2 = dte2.Solution as Solution2; var projectItemTemplate = solution2?.GetProjectItemTemplate("EntityFramework Reverse POCO Code First Generator", "CSharp"); if (!string.IsNullOrEmpty(projectItemTemplate)) { var projectItem = dteH.GetProjectDataContextClass(project, "Database.tt".ToLowerInvariant()); if (projectItem == null) { project.ProjectItems.AddFromTemplate(projectItemTemplate, "Database.tt"); EnvDteHelper.ShowMessage("Please run Custom Tool with the Database.tt file"); } else { EnvDteHelper.ShowMessage("Database.tt already exists, please run Custom Tool with existing Database.tt file"); } } DataConnectionHelper.LogUsage("DatabaseCreateEFPOCODacpac"); } catch (Exception ex) { if (ex.GetType() == typeof(FileNotFoundException)) { EnvDteHelper.ShowMessage("Unable to find the EF Reverse POCO Template, is it installed?"); } else { DataConnectionHelper.SendError(ex, databaseInfo.DatabaseInfo.DatabaseType, false); } } }
internal static Dictionary <string, DatabaseInfo> GetDataConnections(SqlCeToolboxPackage package, bool includeServerConnections, bool serverConnectionsOnly) { // http://www.mztools.com/articles/2007/MZ2007018.aspx Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>(); var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; //Test code... //var objIVsDataProviderManager = package.GetServiceHelper(typeof(IVsDataProviderManager)) as IVsDataProviderManager; //var objIVsDataConnectionManager = package.GetServiceHelper(typeof(IVsDataConnectionManager)) as IVsDataConnectionManager; //var objIVsDataSourceManager = package.GetServiceHelper(typeof(IVsDataSourceManager)) as IVsDataSourceManager; //IVsDataProvider objIVsDataProvider; //foreach (var objIVsDataSource in objIVsDataSourceManager.Sources) //{ // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.DisplayName); // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.Guid.ToString()); // //foreach (var objProviderGuid in objIVsDataSource.GetProviders()) // //{ // // objIVsDataProvider = objIVsDataProviderManager.GetDataProvider(objProviderGuid); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.DisplayName); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.Guid.ToString()); // //} //} // End test code Guid provider35 = new Guid(Resources.SqlCompact35Provider); Guid provider40 = new Guid(Resources.SqlCompact40Provider); Guid providerSQLite = new Guid(Resources.SQLiteProvider); bool isV35Installed = IsV35Installed() && DDEXProviderIsInstalled(provider35); bool isV40Installed = IsV40Installed() && DDEXProviderIsInstalled(provider40); if (dataExplorerConnectionManager != null) { foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var objProviderGuid = connection.Provider; if (!serverConnectionsOnly) { if ((objProviderGuid == provider35 && isV35Installed) || (objProviderGuid == provider40 && isV40Installed)) { DatabaseType dbType = DatabaseType.SQLCE40; if (objProviderGuid == provider35) { dbType = DatabaseType.SQLCE35; } var serverVersion = "4.0"; if (dbType == DatabaseType.SQLCE35) { serverVersion = "3.5"; } var sConnectionString = Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString); if (!sConnectionString.Contains("Mobile Device")) { DatabaseInfo info = new DatabaseInfo(); info.Caption = connection.DisplayName; info.FromServerExplorer = true; info.DatabaseType = dbType; info.ServerVersion = serverVersion; info.ConnectionString = sConnectionString; info.FileIsMissing = IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } if (objProviderGuid == providerSQLite) { DatabaseType dbType = DatabaseType.SQLite; var sConnectionString = Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString); DatabaseInfo info = new DatabaseInfo(); info.Caption = connection.DisplayName; info.FromServerExplorer = true; info.DatabaseType = dbType; info.ServerVersion = "3.9"; info.ConnectionString = sConnectionString; info.FileIsMissing = IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } if (includeServerConnections && objProviderGuid == new Guid(Resources.SqlServerDotNetProvider)) { var sConnectionString = Microsoft.VisualStudio.Data.Services.DataProtection.DecryptString(connection.EncryptedConnectionString); var info = new DatabaseInfo(); info.Caption = connection.DisplayName; info.FromServerExplorer = true; info.DatabaseType = DatabaseType.SQLServer; info.ServerVersion = string.Empty; info.ConnectionString = sConnectionString; if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } catch (KeyNotFoundException) { continue; } catch (NullReferenceException) { continue; } } } return(databaseList); }
internal static Dictionary <string, DatabaseInfo> GetDataConnections(SqlCeToolboxPackage package, bool includeServerConnections, bool serverConnectionsOnly) { // http://www.mztools.com/articles/2007/MZ2007018.aspx Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>(); var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; //Test code... //var objIVsDataProviderManager = package.GetServiceHelper(typeof(IVsDataProviderManager)) as IVsDataProviderManager; //var objIVsDataConnectionManager = package.GetServiceHelper(typeof(IVsDataConnectionManager)) as IVsDataConnectionManager; //var objIVsDataSourceManager = package.GetServiceHelper(typeof(IVsDataSourceManager)) as IVsDataSourceManager; //IVsDataProvider objIVsDataProvider; //foreach (var objIVsDataSource in objIVsDataSourceManager.Sources) //{ // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.DisplayName); // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.Guid.ToString()); // //foreach (var objProviderGuid in objIVsDataSource.GetProviders()) // //{ // // objIVsDataProvider = objIVsDataProviderManager.GetDataProvider(objProviderGuid); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.DisplayName); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.Guid.ToString()); // //} //} // End test code Guid provider35 = new Guid(Resources.SqlCompact35Provider); Guid provider40 = new Guid(Resources.SqlCompact40Provider); Guid provider40Private = new Guid(Resources.SqlCompact40PrivateProvider); Guid providerSqLite = new Guid(Resources.SQLiteProvider); Guid providerSqlitePrivate = new Guid(Resources.SqlitePrivateProvider); bool isV35Installed = RepositoryHelper.IsV35Installed() && DdexProviderIsInstalled(provider35); bool isV40Installed = RepositoryHelper.IsV40Installed() && (DdexProviderIsInstalled(provider40) || DdexProviderIsInstalled(provider40Private)); if (dataExplorerConnectionManager != null) { foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var objProviderGuid = connection.Provider; if (!serverConnectionsOnly) { if ((objProviderGuid == provider35 && isV35Installed) || (objProviderGuid == provider40 && isV40Installed) || (objProviderGuid == provider40Private && isV40Installed)) { DatabaseType dbType = DatabaseType.SQLCE40; if (objProviderGuid == provider35) { dbType = DatabaseType.SQLCE35; } var serverVersion = "4.0"; if (dbType == DatabaseType.SQLCE35) { serverVersion = "3.5"; } var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); if (!sConnectionString.Contains("Mobile Device")) { DatabaseInfo info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = dbType, ServerVersion = serverVersion, ConnectionString = sConnectionString }; info.FileIsMissing = RepositoryHelper.IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } if (objProviderGuid == providerSqLite || objProviderGuid == providerSqlitePrivate) { DatabaseType dbType = DatabaseType.SQLite; var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); DatabaseInfo info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = dbType, ServerVersion = RepositoryHelper.SqliteEngineVersion, ConnectionString = sConnectionString }; info.FileIsMissing = RepositoryHelper.IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } if (includeServerConnections && objProviderGuid == new Guid(Resources.SqlServerDotNetProvider)) { var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); var info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = DatabaseType.SQLServer, ServerVersion = string.Empty, ConnectionString = sConnectionString }; if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } catch (KeyNotFoundException) { } catch (NullReferenceException) { } catch (ArgumentException) { } } } #if SSMS try { if (package.TelemetryVersion().Major == 140 && Properties.Settings.Default.GetObjectExplorerDatabases) { var objectExplorerManager = new ObjectExplorerManager(package); var list = objectExplorerManager.GetAllServerUserDatabases(); foreach (var item in list) { if (!databaseList.ContainsKey(item.Key)) { databaseList.Add(item.Key, item.Value); } } } } catch (MissingMethodException) { } #endif return(databaseList); }
public SqlServerDatabaseMenuCommandsHandler(ExplorerToolWindow parent) { _package = parent.Package as SqlCeToolboxPackage; }
public SqlServerDatabaseMenuCommandsHandler(SqlCeToolboxPackage sqlCeToolboxPackage) { _package = sqlCeToolboxPackage; }
public SqliteDatabaseContextMenu(DatabaseMenuCommandParameters databaseMenuCommandParameters, ExplorerToolWindow parent) { var itemBuilder = new DatabaseContextMenuItems(); var dbType = databaseMenuCommandParameters.DatabaseInfo.DatabaseType; if (dbType != DatabaseType.SQLite) { return; } var dcmd = new DatabaseMenuCommandsHandler(parent); Items.Add(itemBuilder.BuildShowSqlEditorMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(itemBuilder.BuildCreateTableMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); var scriptDatabaseRootMenuItem = new MenuItem { Header = "Script Database", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), }; var toolTip = new ToolTip { Content = "Generate a SQL Server Compact/SQLite compatible database script" }; // Database scripting items var scriptDatabaseCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.ScriptDatabase); scriptDatabaseRootMenuItem.Items.Add(itemBuilder.BuildScriptDatabaseSchemaMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(itemBuilder.BuildScriptDatabaseSchemaDataMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(itemBuilder.BuildScriptDatabaseDataMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); //End Database scripting items Items.Add(scriptDatabaseRootMenuItem); Items.Add(new Separator()); var maintenanceMenuItem = new MenuItem { Header = "Maintenance", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), }; var shrinkMenuItem = itemBuilder.BuildShrinkMenuItem(databaseMenuCommandParameters, dcmd); maintenanceMenuItem.Items.Add(shrinkMenuItem); var compactMenuItem = itemBuilder.BuildCompactMenuItem(databaseMenuCommandParameters, dcmd); maintenanceMenuItem.Items.Clear(); compactMenuItem.Header = "Vacuum"; compactMenuItem.ToolTip = "Rebuilds the database file, repacking it into a minimal amount of disk space"; shrinkMenuItem.Header = "Re-index"; shrinkMenuItem.ToolTip = "Deletes and recreates indexes"; maintenanceMenuItem.Items.Add(compactMenuItem); maintenanceMenuItem.Items.Add(shrinkMenuItem); Items.Add(maintenanceMenuItem); Items.Add(new Separator()); Items.Add(itemBuilder.BuildScriptDatabaseExportMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(itemBuilder.BuildScriptDatabaseGraphMenuItem(databaseMenuCommandParameters, dcmd)); } Items.Add(itemBuilder.BuildDocDatabaseMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); var generateCodeRootMenuItem = new MenuItem { Header = "Generate Code", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), }; #if SSMS #else if (SqlCeToolboxPackage.VsSupportsEfCore()) { generateCodeRootMenuItem.Items.Add(itemBuilder.BuildEfCoreModelMenuItem(databaseMenuCommandParameters, dcmd)); } #endif generateCodeRootMenuItem.Items.Add(BuildScriptModelMenuItem(databaseMenuCommandParameters, dcmd)); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(generateCodeRootMenuItem); } if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(new Separator()); } Items.Add(itemBuilder.BuildGenerateInfoMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); if (!databaseMenuCommandParameters.DatabaseInfo.FromServerExplorer) { Items.Add(itemBuilder.BuildRenameConnectionMenuItem(databaseMenuCommandParameters, dcmd)); } Items.Add(itemBuilder.BuildRemoveConnectionMenuItem(databaseMenuCommandParameters, dcmd)); }
public void GenerateEfPocoInProject(object sender, ExecutedRoutedEventArgs e) { EnvDteHelper.LaunchUrl("https://github.com/ErikEJ/SqlCeToolbox/wiki/EntityFramework-Reverse-POCO-Code-First-Generator"); var databaseInfo = ValidateMenuInfo(sender); if (databaseInfo == null) { return; } var isEf6 = SqlCeToolboxPackage.VsSupportsEf6(); try { if (package == null) { return; } var dte = package.GetServiceHelper(typeof(DTE)) as DTE; if (dte == null) { return; } if (dte.Mode == vsIDEMode.vsIDEModeDebug) { EnvDteHelper.ShowError("Cannot generate code while debugging"); return; } var dteH = new EnvDteHelper(); var project = dteH.GetProject(dte); if (project == null) { EnvDteHelper.ShowError("Please select a project in Solution Explorer, where you want the code to be placed"); return; } if (dte.Solution.SolutionBuild.BuildState == vsBuildState.vsBuildStateNotStarted) { EnvDteHelper.ShowError("Please build the project before proceeding"); return; } if (isEf6) { if (databaseInfo.DatabaseInfo.DatabaseType == DatabaseType.SQLCE40 && !dteH.ContainsEfSqlCeReference(project)) { EnvDteHelper.ShowError("Please add the EntityFramework.SqlServerCompact NuGet package to the project"); return; } if (databaseInfo.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 && !dteH.ContainsEfSqlCeLegacyReference(project)) { EnvDteHelper.ShowError("Please add the EntityFramework.SqlServerCompact.Legacy NuGet package to the project"); return; } if (!File.Exists(Path.Combine(dteH.GetVisualStudioInstallationDir(SqlCeToolboxPackage.VisualStudioVersion), "ItemTemplates\\CSharp\\Data\\1033\\DbCtxCSEF6\\CSharpDbContext.Context.tt"))) { EnvDteHelper.ShowError("Please install the Entity Framework 6 Tools in order to proceed"); return; } } if (!dteH.AllowedProjectKinds.Contains(new Guid(project.Kind))) { EnvDteHelper.ShowError("The selected project type does not support Entity Framework (please let me know if I am wrong)"); return; } if (project.Properties.Item("TargetFrameworkMoniker") == null) { EnvDteHelper.ShowError("The selected project type does not have a TargetFrameworkMoniker"); return; } if (!project.Properties.Item("TargetFrameworkMoniker").Value.ToString().Contains(".NETFramework")) { EnvDteHelper.ShowError("The selected project type does not support .NET Desktop - wrong TargetFrameworkMoniker: " + project.Properties.Item("TargetFrameworkMoniker").Value); return; } var dte2 = (DTE2)package.GetServiceHelper(typeof(DTE)); // ReSharper disable once SuspiciousTypeConversion.Global var solution2 = dte2.Solution as Solution2; if (solution2 != null) { var projectItemTemplate = solution2.GetProjectItemTemplate("EntityFramework Reverse POCO Code First Generator", "CSharp"); if (!string.IsNullOrEmpty(projectItemTemplate)) { project.ProjectItems.AddFromTemplate(projectItemTemplate, "Database.tt"); } } DataConnectionHelper.LogUsage("DatabaseCreateEFPOCO"); } // EDM end catch (Exception ex) { if (ex.GetType() == typeof(FileNotFoundException)) { EnvDteHelper.ShowMessage("Unable to find the EF Reverse POCO Template, is it installed?"); } else { DataConnectionHelper.SendError(ex, databaseInfo.DatabaseInfo.DatabaseType, false); } } }
internal void ValidateConnections(SqlCeToolboxPackage package) { var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; var removals = new List<IVsDataExplorerConnection>(); foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var objProviderGuid = connection.Provider; if ((objProviderGuid == new Guid (Resources.SqlCompact35Provider) && IsV35Installed()) || (objProviderGuid == new Guid (Resources.SqlCompact40Provider) && IsV40Installed())) { connection.Connection.Open(); connection.Connection.Close(); } } catch (Exception ex) { if (ex.GetType().Name == "SqlCeException") { removals.Add(connection); } if (ex.GetType() == typeof(ArgumentException)) { removals.Add(connection); } if (ex.GetType() == typeof(KeyNotFoundException)) { removals.Add(connection); } throw; } } for (int i = removals.Count - 1; i >= 0; i--) { try { dataExplorerConnectionManager.RemoveConnection(removals[i]); } catch (ArgumentException) { } catch (IndexOutOfRangeException) { } catch (KeyNotFoundException) { } } var ownConnections = GetOwnDataConnections(); foreach (var item in ownConnections) { try { using (var test = CreateRepository(item.Value)) { } } catch (Exception ex) { if (ex.GetType().Name == "SqlCeException") { System.Diagnostics.Debug.WriteLine(ex.Message); RemoveDataConnection(item.Value.ConnectionString); } throw; } } }