public void OptimizeEdmx(string inputPath) { DebugCheck.NotEmpty(inputPath); var baseFileName = Path.GetFileNameWithoutExtension(inputPath); try { var selectedItem = _package.DTE2.SelectedItems.Item(1); var project = selectedItem.ProjectItem.ContainingProject; var languageOption = project.CodeModel.Language == CodeModelLanguageConstants.vsCMLanguageCSharp ? LanguageOption.GenerateCSharpCode : LanguageOption.GenerateVBCode; var edmxUtility = new EdmxUtility(inputPath); var ef6Reference = ((VSProject)project.Object).References.Cast <Reference>().FirstOrDefault( r => r.Name.EqualsIgnoreCase("EntityFramework") && Version.Parse(r.Version) >= new Version(6, 0) && r.PublicKeyToken.EqualsIgnoreCase("b77a5c561934e089")); if (ef6Reference == null) { var mappingCollection = edmxUtility.GetMappingCollection(); OptimizeContextEF5(languageOption, baseFileName, mappingCollection, selectedItem); } else { var typeService = _package.GetService <DynamicTypeService>(); var solution = _package.GetService <SVsSolution, IVsSolution>(); IVsHierarchy hierarchy; solution.GetProjectOfUniqueName(project.UniqueName, out hierarchy); var typeResolutionService = typeService.GetTypeResolutionService(hierarchy); var ef6Assembly = typeResolutionService.GetAssembly( new AssemblyName { Name = ef6Reference.Name, Version = new Version(ef6Reference.Version) }); if (ef6Assembly != null) { string containerName; var mappingCollection = edmxUtility.GetMappingCollectionEF6(ef6Assembly, out containerName); var contextTypeName = selectedItem.ProjectItem.GetDefaultNamespace() + "." + containerName; OptimizeContextEF6(languageOption, baseFileName, mappingCollection, selectedItem, contextTypeName); } else { var mappingCollection = edmxUtility.GetMappingCollection(); OptimizeContextEF5(languageOption, baseFileName, mappingCollection, selectedItem); } } } catch (Exception ex) { _package.LogError(Strings.Optimize_EdmxError(baseFileName), ex); } }
public void OptimizeEdmx(string inputPath) { DebugCheck.NotEmpty(inputPath); var baseFileName = Path.GetFileNameWithoutExtension(inputPath); try { var project = _package.DTE2.SelectedItems.Item(1).ProjectItem.ContainingProject; var languageOption = project.CodeModel.Language == CodeModelLanguageConstants.vsCMLanguageCSharp ? LanguageOption.GenerateCSharpCode : LanguageOption.GenerateVBCode; var mappingCollection = new EdmxUtility(inputPath).GetMappingCollection(); OptimizeContextCore(languageOption, baseFileName, mappingCollection); } catch (Exception ex) { _package.LogError(Strings.Optimize_EdmxError(baseFileName), ex); } }