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 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); } } }
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)); }
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 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); } } }
public SqlCeDatabaseContextMenu(DatabaseMenuCommandParameters databaseMenuCommandParameters, ExplorerToolWindow parent) { var itemBuilder = new DatabaseContextMenuItems(); var dbType = databaseMenuCommandParameters.DatabaseInfo.DatabaseType; if (!(dbType == DatabaseType.SQLCE35 || dbType == DatabaseType.SQLCE40)) { return; } var dcmd = new DatabaseMenuCommandsHandler(parent); var cecmd = new SqlCeDatabaseMenuCommandsHandler(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(BuildScriptAzureSchemaDataMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(itemBuilder.BuildScriptDatabaseSchemaDataSqLiteMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(itemBuilder.BuildScriptDatabaseSchemaDataBlobMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(itemBuilder.BuildScriptDatabaseDataMenuItem(databaseMenuCommandParameters, toolTip, scriptDatabaseCommandBinding)); scriptDatabaseRootMenuItem.Items.Add(BuildScriptDatabaseDataForServerMenuItem(databaseMenuCommandParameters, scriptDatabaseCommandBinding)); 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 = itemBuilder.BuildShrinkMenuItem(databaseMenuCommandParameters, dcmd); maintenanceMenuItem.Items.Add(shrinkMenuItem); var compactMenuItem = itemBuilder.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)); Items.Add(maintenanceMenuItem); Items.Add(new Separator()); Items.Add(itemBuilder.BuildScriptDatabaseExportMenuItem(databaseMenuCommandParameters, dcmd)); if (dbType == DatabaseType.SQLCE35 && Helpers.RepositoryHelper.IsV40Installed()) { Items.Add(BuildScriptUpgradeMenuItem(databaseMenuCommandParameters, cecmd)); } 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 (SqlCeToolboxPackage.VsSupportsEf6()) { generateCodeRootMenuItem.Items.Add(BuildScriptEfPocoMenuItem(databaseMenuCommandParameters, dcmd)); } #if SSMS #else var scriptDcCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, cecmd.GenerateDataContextInProject); generateCodeRootMenuItem.Items.Add(BuildScriptDcMenuItem(databaseMenuCommandParameters, scriptDcCommandBinding)); generateCodeRootMenuItem.Items.Add(BuildScriptWpdcMenuItem(databaseMenuCommandParameters, scriptDcCommandBinding, dbType)); 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)); generateCodeRootMenuItem.Items.Add(BuildSyncFxMenuItem(databaseMenuCommandParameters, cecmd, dbType, isSyncFxInstalled)); generateCodeRootMenuItem.Items.Add(syncFxRootMenuItem); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(generateCodeRootMenuItem); } if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(new Separator()); } Items.Add(BuildAddDescriptionMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(itemBuilder.BuildGenerateInfoMenuItem(databaseMenuCommandParameters, dcmd)); Items.Add(new Separator()); Items.Add(BuildCopyConnectionMenuItem(databaseMenuCommandParameters, cecmd)); if (!databaseMenuCommandParameters.DatabaseInfo.FromServerExplorer) { Items.Add(itemBuilder.BuildRenameConnectionMenuItem(databaseMenuCommandParameters, dcmd)); } Items.Add(itemBuilder.BuildRemoveConnectionMenuItem(databaseMenuCommandParameters, dcmd)); }
public DatabaseContextMenu(DatabaseMenuCommandParameters databaseMenuCommandParameters, ExplorerToolWindow parent) { var isSqlCe = databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 || databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE40; var dcmd = new DatabaseMenuCommandsHandler(parent); var showSqlEditorCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.SpawnSqlEditorWindow); var showSqlEditorMenuItem = new MenuItem { Header = "New Query", Icon = ImageHelper.GetImageFromResource("../resources/NewQuery.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; showSqlEditorMenuItem.CommandBindings.Add(showSqlEditorCommandBinding); Items.Add(showSqlEditorMenuItem); var createTableCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.BuildTable); var createTableMenuItem = new MenuItem { Header = "Build Table (beta)...", Icon = ImageHelper.GetImageFromResource("../resources/AddTable_5632.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; createTableMenuItem.CommandBindings.Add(createTableCommandBinding); Items.Add(createTableMenuItem); 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); var scriptDatabaseSchemaMenuItem = new MenuItem { Header = "Script Database Schema...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.Schema }; scriptDatabaseSchemaMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); scriptDatabaseRootMenuItem.Items.Add(scriptDatabaseSchemaMenuItem); var scriptDatabaseSchemaDataMenuItem = new MenuItem { Header = "Script Database Schema and Data...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.SchemaData }; scriptDatabaseSchemaDataMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); scriptDatabaseRootMenuItem.Items.Add(scriptDatabaseSchemaDataMenuItem); var scriptAzureSchemaDataMenuItem = new MenuItem { Header = "Script Database Schema and Data for SQL Azure...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.SchemaDataAzure }; scriptAzureSchemaDataMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(scriptAzureSchemaDataMenuItem); } var scriptSqliteSchemaDataMenuItem = new MenuItem { Header = "Script Database Schema and Data for SQLite...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.SchemaDataSQLite }; scriptSqliteSchemaDataMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(scriptSqliteSchemaDataMenuItem); } var scriptDatabaseSchemaDataBlobMenuItem = new MenuItem { Header = "Script Database Schema and Data with BLOBs...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.SchemaDataBlobs }; scriptDatabaseSchemaDataBlobMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(scriptDatabaseSchemaDataBlobMenuItem); } var scriptDatabaseDataMenuItem = new MenuItem { Header = "Script Database Data...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.DataOnly }; scriptDatabaseDataMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); scriptDatabaseRootMenuItem.Items.Add(scriptDatabaseDataMenuItem); var scriptDatabaseDataForServerMenuItem = new MenuItem { Header = "Script Database Data for SQL Server...", Icon = ImageHelper.GetImageFromResource("../resources/script_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = SqlCeScripting.Scope.DataOnlyForSqlServer }; scriptDatabaseDataForServerMenuItem.CommandBindings.Add(scriptDatabaseCommandBinding); if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(scriptDatabaseDataForServerMenuItem); } var scriptDiffCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateDiffScript); var scriptDatabaseDiffMenuItem = new MenuItem { Header = "Script Database Diff...", Icon = ImageHelper.GetImageFromResource("../resources/DataCompare_9880.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptDatabaseDiffMenuItem.CommandBindings.Add(scriptDiffCommandBinding); scriptDatabaseDiffMenuItem.ToolTip = "Script all tables, columns and constraints in this database\r\nthat are missing/different in the target database."; if (isSqlCe) { scriptDatabaseRootMenuItem.Items.Add(scriptDatabaseDiffMenuItem); } //End Database scripting options Items.Add(scriptDatabaseRootMenuItem); Items.Add(new Separator()); var maintenanceMenuItem = new MenuItem { Header = "Maintenance", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), }; var setPwdCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.SetPassword); var pwdMenuItem = new MenuItem { Header = "Set Password", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Set the database password" }; pwdMenuItem.CommandBindings.Add(setPwdCommandBinding); maintenanceMenuItem.Items.Add(pwdMenuItem); var shrinkCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.ShrinkDatabase); var shrinkMenuItem = new MenuItem { Header = "Shrink", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Shrink database by deleting free pages" }; shrinkMenuItem.CommandBindings.Add(shrinkCommandBinding); maintenanceMenuItem.Items.Add(shrinkMenuItem); var compactCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.CompactDatabase); var compactMenuItem = new MenuItem { Header = "Compact", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Perform full database compaction" }; compactMenuItem.CommandBindings.Add(compactCommandBinding); maintenanceMenuItem.Items.Add(compactMenuItem); var verifyCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.VerifyDatabase); var verifyMenuItem = new MenuItem { Header = "Verify", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Verify the integrity of the database (enhanced)" }; verifyMenuItem.CommandBindings.Add(verifyCommandBinding); maintenanceMenuItem.Items.Add(verifyMenuItem); var repairDeleteCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.RepairDatabaseDeleteCorruptedRows); var repairDeleteMenuItem = new MenuItem { Header = "Repair (delete corrupted rows)", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Repairs a corrupted database" }; repairDeleteMenuItem.CommandBindings.Add(repairDeleteCommandBinding); maintenanceMenuItem.Items.Add(repairDeleteMenuItem); var repairRecoverAllCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.RepairDatabaseRecoverAllOrFail); var repairRecoverAllMenuItem = new MenuItem { Header = "Repair (recover all or fail)", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Repairs a corrupted database" }; repairRecoverAllMenuItem.CommandBindings.Add(repairRecoverAllCommandBinding); maintenanceMenuItem.Items.Add(repairRecoverAllMenuItem); var repairRecoverPossibleCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.RepairDatabaseRecoverAllPossibleRows); var repairRecoverPossibleMenuItem = new MenuItem { Header = "Repair (recover all possible)", Icon = ImageHelper.GetImageFromResource("../resources/Hammer_Builder_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, ToolTip = "Repairs a corrupted database" }; repairRecoverPossibleMenuItem.CommandBindings.Add(repairRecoverPossibleCommandBinding); maintenanceMenuItem.Items.Add(repairRecoverPossibleMenuItem); if (isSqlCe) { Items.Add(maintenanceMenuItem); Items.Add(new Separator()); } var scriptExportCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.ExportToServer); var scriptDatabaseExportMenuItem = new MenuItem { Header = "Migrate to SQL Server (incl. LocalDB/Express)...", Icon = ImageHelper.GetImageFromResource("../resources/ExportReportData_10565.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptDatabaseExportMenuItem.CommandBindings.Add(scriptExportCommandBinding); scriptDatabaseExportMenuItem.ToolTip = "Migrate entire database to a SQL Server database"; Items.Add(scriptDatabaseExportMenuItem); var scriptUpgradeCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.UpgradeTo40); var scriptUpgradeMenuItem = new MenuItem { Header = "Upgrade to version 4.0...", Icon = ImageHelper.GetImageFromResource("../resources/ExportReportData_10565.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptUpgradeMenuItem.CommandBindings.Add(scriptUpgradeCommandBinding); scriptUpgradeMenuItem.ToolTip = "Create a copy of this database in 4.0 format"; if (databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 && DataConnectionHelper.IsV40Installed()) { Items.Add(scriptUpgradeMenuItem); } Items.Add(new Separator()); var scriptGraphCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateCeDgmlFiles); var scriptDatabaseGraphMenuItem = new MenuItem { Header = "Create Database Graph (DGML)...", Icon = ImageHelper.GetImageFromResource("../resources/Diagram_16XLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptDatabaseGraphMenuItem.CommandBindings.Add(scriptGraphCommandBinding); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(scriptDatabaseGraphMenuItem); } // Documentation menu item var docDbCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateDocFiles); var docDatabaseMenuItem = new MenuItem { Header = "Create Database Documentation...", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; docDatabaseMenuItem.CommandBindings.Add(docDbCommandBinding); Items.Add(docDatabaseMenuItem); Items.Add(new Separator()); var generateCodeRootMenuItem = new MenuItem { Header = "Generate Code (EF/LINQ to SQL/SyncFX)", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), }; var scriptEfPocoCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateEfPocoInProject); var scriptEfPocoMenuItem = new MenuItem { Header = "Add Entity Data Model (Code First from Database) to current Project... (beta)", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptEfPocoMenuItem.CommandBindings.Add(scriptEfPocoCommandBinding); if (isSqlCe && SqlCeToolboxPackage.VsSupportsEf6()) { generateCodeRootMenuItem.Items.Add(scriptEfPocoMenuItem); } var scriptEdmxCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateEdmxInProject); var scriptEdmxMenuItem = new MenuItem { Header = "Add Entity Data Model (EDMX) to current Project...", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptEdmxMenuItem.CommandBindings.Add(scriptEdmxCommandBinding); generateCodeRootMenuItem.Items.Add(scriptEdmxMenuItem); generateCodeRootMenuItem.Items.Add(new Separator()); var scriptDcCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateDataContextInProject); var scriptDcMenuItem = new MenuItem { Header = "Add LINQ to SQL DataContext to current Project...", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = true }; scriptDcMenuItem.CommandBindings.Add(scriptDcCommandBinding); scriptDcMenuItem.IsEnabled = DataConnectionHelper.IsV35Installed() && DataConnectionHelper.IsV35DbProviderInstalled(); generateCodeRootMenuItem.Items.Add(scriptDcMenuItem); var scriptWpdcMenuItem = new MenuItem { Header = "Add Windows Phone DataContext to current Project...", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, Tag = false }; scriptWpdcMenuItem.CommandBindings.Add(scriptDcCommandBinding); scriptWpdcMenuItem.IsEnabled = DataConnectionHelper.IsV35Installed() && DataConnectionHelper.IsV35DbProviderInstalled(); if (databaseMenuCommandParameters.DatabaseInfo.DatabaseType != DatabaseType.SQLCE35) { scriptWpdcMenuItem.IsEnabled = false; } generateCodeRootMenuItem.Items.Add(scriptWpdcMenuItem); generateCodeRootMenuItem.Items.Add(new Separator()); var syncFxRootMenuItem = new MenuItem { Header = "Sync Framework Tools", Icon = ImageHelper.GetImageFromResource("../resources/Synchronize_16xLG.png"), }; var isSyncFxInstalled = DataConnectionHelper.IsSyncFx21Installed(); var syncFxProvisionCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.SyncFxProvisionScope); var syncFxProvisionMenuItem = new MenuItem { Header = "Provision Sync Framework Scope...", Icon = ImageHelper.GetImageFromResource("../resources/Synchronize_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; syncFxProvisionMenuItem.CommandBindings.Add(syncFxProvisionCommandBinding); syncFxProvisionMenuItem.IsEnabled = databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 && isSyncFxInstalled; syncFxRootMenuItem.Items.Add(syncFxProvisionMenuItem); var syncFxDeprovisionCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.SyncFxDeprovisionDatabase); var syncFxDeprovisionMenuItem = new MenuItem { Header = "Deprovision Sync Framework Objects from Database", Icon = ImageHelper.GetImageFromResource("../resources/Synchronize_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; syncFxDeprovisionMenuItem.CommandBindings.Add(syncFxDeprovisionCommandBinding); syncFxDeprovisionMenuItem.IsEnabled = databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 && isSyncFxInstalled; syncFxRootMenuItem.Items.Add(syncFxDeprovisionMenuItem); var syncFxGenerateSnapshotCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.SyncFxGenerateSnapshot); var syncFxGenerateSnapshotMenuItem = new MenuItem { Header = "Generate snapshot database to initialize other clients...", Icon = ImageHelper.GetImageFromResource("../resources/Synchronize_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; syncFxGenerateSnapshotMenuItem.CommandBindings.Add(syncFxGenerateSnapshotCommandBinding); syncFxGenerateSnapshotMenuItem.IsEnabled = databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 && isSyncFxInstalled; syncFxRootMenuItem.Items.Add(syncFxGenerateSnapshotMenuItem); var syncFxCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.SyncFxGenerateSyncCodeInProject); var syncFxMenuItem = new MenuItem { Header = "Add Sync Framework Class to current Project...", Icon = ImageHelper.GetImageFromResource("../resources/Synchronize_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; syncFxMenuItem.CommandBindings.Add(syncFxCommandBinding); syncFxMenuItem.IsEnabled = databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLCE35 && isSyncFxInstalled; generateCodeRootMenuItem.Items.Add(syncFxMenuItem); generateCodeRootMenuItem.Items.Add(syncFxRootMenuItem); if (isSqlCe && SqlCeToolboxPackage.IsVsExtension) { Items.Add(generateCodeRootMenuItem); } else if (databaseMenuCommandParameters.DatabaseInfo.DatabaseType == DatabaseType.SQLite) { var scriptModelCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateModelCodeInProject); var scriptModelMenuItem = new MenuItem { Header = "Add sqlite-net DataAccess.cs to current Project...", Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters, }; scriptModelMenuItem.CommandBindings.Add(scriptModelCommandBinding); if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(scriptModelMenuItem); } //var scriptSqliteEdmxCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, // dcmd.GenerateEdmxInProject); //var scriptSqliteEdmxMenuItem = new MenuItem //{ // Header = "Add Entity Data Model (EDMX) to current Project...", // Icon = ImageHelper.GetImageFromResource("../resources/Schema_16xLG.png"), // Command = DatabaseMenuCommands.DatabaseCommand, // CommandParameter = databaseMenuCommandParameters, //}; //scriptSqliteEdmxMenuItem.CommandBindings.Add(scriptSqliteEdmxCommandBinding); //Items.Add(scriptSqliteEdmxMenuItem); } if (SqlCeToolboxPackage.IsVsExtension) { Items.Add(new Separator()); } var addDescriptionCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.AddDescription); var addDescriptionMenuItem = new MenuItem { Header = "Edit description...", Icon = ImageHelper.GetImageFromResource("../resources/properties_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; addDescriptionMenuItem.CommandBindings.Add(addDescriptionCommandBinding); if (isSqlCe) { Items.Add(addDescriptionMenuItem); } var generateInfoCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.GenerateDatabaseInfo); var generateInfoMenuItem = new MenuItem { Header = "Database Information", Icon = ImageHelper.GetImageFromResource("../resources/properties_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; generateInfoMenuItem.CommandBindings.Add(generateInfoCommandBinding); Items.Add(generateInfoMenuItem); Items.Add(new Separator()); var copyCeConnectionCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.CopyCeDatabase); var copyCeConnectionMenuItem = new MenuItem { InputGestureText = "Ctrl+C", Header = "Copy Database File", Icon = ImageHelper.GetImageFromResource("../resources/Copy_6524.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; copyCeConnectionMenuItem.CommandBindings.Add(copyCeConnectionCommandBinding); Items.Add(copyCeConnectionMenuItem); var renameConnectionCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.RenameConnection); var renameConnectionMenuItem = new MenuItem { Header = "Rename Connection... (beta)", Icon = ImageHelper.GetImageFromResource("../resources/Rename_6779.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; renameConnectionMenuItem.CommandBindings.Add(renameConnectionCommandBinding); if (!databaseMenuCommandParameters.DatabaseInfo.FromServerExplorer) { Items.Add(renameConnectionMenuItem); } var removeCeConnectionCommandBinding = new CommandBinding(DatabaseMenuCommands.DatabaseCommand, dcmd.RemoveCeDatabase); var removeCeConnectionMenuItem = new MenuItem { Header = "Remove Connection", Icon = ImageHelper.GetImageFromResource("../resources/action_Cancel_16xLG.png"), Command = DatabaseMenuCommands.DatabaseCommand, CommandParameter = databaseMenuCommandParameters }; removeCeConnectionMenuItem.CommandBindings.Add(removeCeConnectionCommandBinding); Items.Add(removeCeConnectionMenuItem); }