public void OptimizeContext(dynamic context) { Type contextType = context.GetType(); if (GetEntityFrameworkVersion(contextType) >= new Version(6, 0)) { MessageBox.Show( "Generating views for Entity Framework version 6 is currently not supported.", "Entity Framework Power Tools", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { var selectedItem = _package.DTE2.SelectedItems.Item(1); var selectedItemExtension = (string)selectedItem.ProjectItem.Properties.Item("Extension").Value; var languageOption = selectedItemExtension == FileExtensions.CSharp ? LanguageOption.GenerateCSharpCode : LanguageOption.GenerateVBCode; var objectContext = DbContextPackage.GetObjectContext(context); var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace); OptimizeContextCore(languageOption, contextType.Name, mappingCollection); } catch (Exception ex) { _package.LogError(Strings.Optimize_ContextError(contextType.Name), ex); } }
public void ViewDdl(dynamic context) { Type contextType = context.GetType(); try { var filePath = Path.Combine( Path.GetTempPath(), contextType.Name + FileExtensions.Sql); if (File.Exists(filePath)) { File.SetAttributes(filePath, FileAttributes.Normal); } var objectContext = DbContextPackage.GetObjectContext(context); File.WriteAllText(filePath, objectContext.CreateDatabaseScript()); File.SetAttributes(filePath, FileAttributes.ReadOnly); _package.DTE2.ItemOperations.OpenFile(filePath); } catch (Exception exception) { _package.LogError(Strings.ViewDdlError(contextType.Name), exception); } }
private Version GetEntityFrameworkVersion(DbContextPackage package, Project project) { var vsProject = (VSLangProj.VSProject)project.Object; var entityFrameworkReference = vsProject.References.Cast <VSLangProj.Reference>().FirstOrDefault(r => r.Name == "EntityFramework"); if (entityFrameworkReference == null) { // Add EF References package.LogInfo(Strings.ReverseEngineer_InstallEntityFramework); try { project.InstallPackage("EntityFramework"); } catch (Exception ex) { entityFrameworkReference = vsProject.References.Cast <VSLangProj.Reference>().FirstOrDefault(r => r.Name == "EntityFramework"); if (entityFrameworkReference == null) { package.LogError(Strings.ReverseEngineer_InstallEntityFrameworkError, ex); throw new Exception("安装EF出错!"); } } } return(new Version(entityFrameworkReference.Version)); }
public void OptimizeContext(dynamic context) { Type contextType = context.GetType(); try { var selectedItem = _package.DTE2.SelectedItems.Item(1); var selectedItemExtension = (string)selectedItem.ProjectItem.Properties.Item("Extension").Value; var languageOption = selectedItemExtension == FileExtensions.CSharp ? LanguageOption.GenerateCSharpCode : LanguageOption.GenerateVBCode; var objectContext = DbContextPackage.GetObjectContext(context); var baseFileName = contextType.Name; if (GetEntityFrameworkVersion(contextType) < new Version(6, 0)) { var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace); OptimizeContextEF5(languageOption, baseFileName, mappingCollection, selectedItem); } else { var metadataWorkspace = objectContext.MetadataWorkspace; var getItemCollection = ((Type)metadataWorkspace.GetType()).GetMethod("GetItemCollection"); var dataSpace = getItemCollection.GetParameters().First().ParameterType; var mappingCollection = getItemCollection.Invoke( metadataWorkspace, new[] { Enum.Parse(dataSpace, "CSSpace") }); OptimizeContextEF6( languageOption, baseFileName, mappingCollection, selectedItem, contextType.FullName); } } catch (Exception ex) { _package.LogError(Strings.Optimize_ContextError(contextType.Name), ex); } }
public AddCustomTemplatesHandler(DbContextPackage package) { Contract.Requires(package != null); _package = package; }
public ReverseEngineerCodeFirstHandler(DbContextPackage package) { Contract.Requires(package != null); _package = package; }
public ViewDdlHandler(DbContextPackage package) { DebugCheck.NotNull(package); _package = package; }
public AddCustomTemplatesHandler(DbContextPackage package) { DebugCheck.NotNull(package); _package = package; }
public OptimizeContextHandler(DbContextPackage package) { DebugCheck.NotNull(package); _package = package; }
public ReverseEngineerCodeFirstHandler(DbContextPackage package) { DebugCheck.NotNull(package); this.package = package; }
public OptimizeContextHandler(DbContextPackage package) { Contract.Requires(package != null); _package = package; }
public ViewContextHandler(DbContextPackage package) { Contract.Requires(package != null); _package = package; }
public ReverseEngineerCodeFirstHandler(DbContextPackage package) { DebugCheck.NotNull(package); _package = package; }
public ViewContextHandler(DbContextPackage package) { DebugCheck.NotNull(package); _package = package; }
public ViewDdlHandler(DbContextPackage package) { Contract.Requires(package != null); _package = package; }