public Wizard(ConnectedServiceProviderContext context) { this.Context = context; this.UserSettings = UserSettings.Load(context.Logger); ConfigODataEndpointViewModel = new ConfigODataEndpointViewModel(this.UserSettings, this); AdvancedSettingsViewModel = new AdvancedSettingsViewModel(this.UserSettings, this); FunctionImportsViewModel = new FunctionImportsViewModel(this.UserSettings, this); if (this.Context.IsUpdating) { // Since ServiceConfigurationV4 is a derived type of ServiceConfiguration. So we can deserialize a ServiceConfiguration into a ServiceConfigurationV4. var serviceConfig = this.Context.GetExtendedDesignerData <ServiceConfigurationV4>(); ConfigODataEndpointViewModel.LanguageOption = serviceConfig.LanguageOption; ConfigODataEndpointViewModel.Endpoint = serviceConfig.Endpoint; ConfigODataEndpointViewModel.EdmxVersion = serviceConfig.EdmxVersion; ConfigODataEndpointViewModel.ServiceName = serviceConfig.ServiceName; ConfigODataEndpointViewModel.AcceptAllUntrustedCertificates = serviceConfig.AcceptAllUntrustedCertificates; ConfigODataEndpointViewModel.UseWebProxy = serviceConfig.UseWebProxy; ConfigODataEndpointViewModel.NetworkCredentialsDomain = serviceConfig.NetworkCredentialsDomain; ConfigODataEndpointViewModel.NetworkCredentialsUserName = serviceConfig.NetworkCredentialsUserName; ConfigODataEndpointViewModel.NetworkCredentialsPassword = serviceConfig.NetworkCredentialsPassword; ConfigODataEndpointViewModel.WebProxyNetworkCredentialsDomain = serviceConfig.WebProxyNetworkCredentialsDomain; ConfigODataEndpointViewModel.WebProxyNetworkCredentialsUserName = serviceConfig.WebProxyNetworkCredentialsUserName; ConfigODataEndpointViewModel.WebProxyNetworkCredentialsPassword = serviceConfig.WebProxyNetworkCredentialsPassword; ConfigODataEndpointViewModel.UseNetworkCredentials = serviceConfig.UseNetworkCredentials; ConfigODataEndpointViewModel.WebProxyUri = serviceConfig.WebProxyUri; if (ConfigODataEndpointViewModel.View is ConfigODataEndpoint configODataEndpoint) { configODataEndpoint.IsEnabled = false; } // The Viewmodel should always be filled otherwise if the wizard is completed without visiting this page the generated code becomes wrong AdvancedSettingsViewModel.GeneratedFileNameEnabled = false; // advancedSettings.ReferenceFileName.IsEnabled = false; AdvancedSettingsViewModel.GeneratedFileNamePrefix = serviceConfig.GeneratedFileNamePrefix; AdvancedSettingsViewModel.UseNamespacePrefix = serviceConfig.UseNameSpacePrefix; AdvancedSettingsViewModel.NamespacePrefix = serviceConfig.NamespacePrefix; AdvancedSettingsViewModel.UseDataServiceCollection = serviceConfig.UseDataServiceCollection; AdvancedSettingsViewModel.UseAsyncDataServiceCollection = serviceConfig.UseAsyncDataServiceCollection; AdvancedSettingsViewModel.OperationImportsGenerator = serviceConfig.OperationImportsGenerator; AdvancedSettingsViewModel.SelectOperationImports = serviceConfig.GenerateOperationImports; AdvancedSettingsViewModel.ExcludedOperationImportsNames = serviceConfig.ExcludedOperationImportsNames; if (serviceConfig.EdmxVersion == Common.Constants.EdmxVersion4) { AdvancedSettingsViewModel.IgnoreUnexpectedElementsAndAttributes = serviceConfig.IgnoreUnexpectedElementsAndAttributes; AdvancedSettingsViewModel.GenerateDynamicPropertiesCollection = serviceConfig.GenerateDynamicPropertiesCollection; AdvancedSettingsViewModel.DynamicPropertiesCollectionName = serviceConfig.DynamicPropertiesCollectionName; AdvancedSettingsViewModel.EnableNamingAlias = serviceConfig.EnableNamingAlias; AdvancedSettingsViewModel.IncludeT4File = serviceConfig.IncludeT4File; AdvancedSettingsViewModel.MakeTypesInternal = serviceConfig.MakeTypesInternal; AdvancedSettingsViewModel.IncludeT4FileEnabled = true; } // Restore the advanced settings to UI elements. AdvancedSettingsViewModel.PageEntering += (sender, args) => { if (sender is AdvancedSettingsViewModel advancedSettingsViewModel) { if (advancedSettingsViewModel.View is AdvancedSettings advancedSettings) { advancedSettings.ReferenceFileName.IsEnabled = false; advancedSettingsViewModel.GeneratedFileNamePrefix = serviceConfig.GeneratedFileNamePrefix; advancedSettingsViewModel.UseNamespacePrefix = serviceConfig.UseNameSpacePrefix; advancedSettingsViewModel.NamespacePrefix = serviceConfig.NamespacePrefix; advancedSettingsViewModel.UseDataServiceCollection = serviceConfig.UseDataServiceCollection; advancedSettingsViewModel.UseAsyncDataServiceCollection = serviceConfig.UseAsyncDataServiceCollection; advancedSettingsViewModel.OperationImportsGenerator = serviceConfig.OperationImportsGenerator; advancedSettingsViewModel.SelectOperationImports = serviceConfig.GenerateOperationImports; advancedSettingsViewModel.ExcludedOperationImportsNames = serviceConfig.ExcludedOperationImportsNames; if (serviceConfig.EdmxVersion == Common.Constants.EdmxVersion4) { advancedSettingsViewModel.IgnoreUnexpectedElementsAndAttributes = serviceConfig.IgnoreUnexpectedElementsAndAttributes; advancedSettingsViewModel.GenerateDynamicPropertiesCollection = serviceConfig.GenerateDynamicPropertiesCollection; advancedSettingsViewModel.DynamicPropertiesCollectionName = serviceConfig.DynamicPropertiesCollectionName; advancedSettingsViewModel.EnableNamingAlias = serviceConfig.EnableNamingAlias; advancedSettingsViewModel.IncludeT4File = serviceConfig.IncludeT4File; advancedSettingsViewModel.MakeTypesInternal = serviceConfig.MakeTypesInternal; advancedSettingsViewModel.IncludeT4FileEnabled = true; advancedSettings.IncludeT4File.IsEnabled = true; } if (!advancedSettingsViewModel.SelectOperationImports || UserSettings.LanguageOption != LanguageOption.GenerateCSharpCode) { RemoveOperationImportsSettingsPage(); } else { AddOperationImportsSettingsPage(); } } } }; FunctionImportsViewModel.FunctionImports = serviceConfig.FunctionImports ?? new List <FunctionImportModel>(); FunctionImportsViewModel.OperationImports = serviceConfig.OperationImports ?? new List <OperationImportModel>(); FunctionImportsViewModel.FunctionImportsCount = serviceConfig.FunctionImports?.Count ?? 0; FunctionImportsViewModel.OperationImportsCount = serviceConfig.OperationImports?.Count ?? 0; } AdvancedSettingsViewModel.PageEntering += (sender, args) => { if (sender is AdvancedSettingsViewModel advancedSettingsViewModel) { advancedSettingsViewModel.IncludeExtensionsT4File = AdvancedSettingsViewModel.IncludeExtensionsT4File; advancedSettingsViewModel.IncludeExtensionsT4FileVisibility = ConfigODataEndpointViewModel.EdmxVersion != Common.Constants.EdmxVersion4 ? Visibility.Visible : Visibility.Collapsed; advancedSettingsViewModel.OperationImportsGenerator = AdvancedSettingsViewModel.OperationImportsGenerator; advancedSettingsViewModel.SelectOperationImports = AdvancedSettingsViewModel.SelectOperationImports; advancedSettingsViewModel.IncludeT4FileEnabled = true; if (!advancedSettingsViewModel.SelectOperationImports || UserSettings.LanguageOption != LanguageOption.GenerateCSharpCode) { RemoveOperationImportsSettingsPage(); } else { AddOperationImportsSettingsPage(); } } }; FunctionImportsViewModel.PageEntering += (sender, args) => { if (sender is FunctionImportsViewModel functionImportsViewModel) { if (ConfigODataEndpointViewModel.EdmxVersion == Common.Constants.EdmxVersion4 && (FunctionImportsViewModel.OperationImports == null || !FunctionImportsViewModel.OperationImports.Any() || (AdvancedSettingsViewModel.UseNamespacePrefix && FunctionImportsViewModel.OperationImports.Any(fi => fi.Namespace != AdvancedSettingsViewModel.NamespacePrefix)) || FunctionImportsViewModel.OperationImports.Any(fi => !this.UserSettings.Endpoint.Contains(fi.EndpointUri)))) { FunctionImportsViewModel.OperationImports = OperationImportsHelper.GetOperationsImports( (this.CreateServiceConfiguration() as ServiceConfigurationV4).GetODataEdmModel(), AdvancedSettingsViewModel.UseNamespacePrefix ? AdvancedSettingsViewModel.NamespacePrefix : null, File.Exists(ConfigODataEndpointViewModel.Endpoint) ? ConfigODataEndpointViewModel.Endpoint : ConfigODataEndpointViewModel.Endpoint.Replace("$metadata", string.Empty)); FunctionImportsViewModel.OperationImportsCount = FunctionImportsViewModel.OperationImports?.Count ?? 0; } if (ConfigODataEndpointViewModel.EdmxVersion != Common.Constants.EdmxVersion4 && (FunctionImportsViewModel.FunctionImports == null || !FunctionImportsViewModel.FunctionImports.Any() || (AdvancedSettingsViewModel.UseNamespacePrefix && FunctionImportsViewModel.FunctionImports.Any(fi => fi.Namespace != AdvancedSettingsViewModel.NamespacePrefix)) || FunctionImportsViewModel.FunctionImports.Any(fi => !this.UserSettings.Endpoint.Contains(fi.EndpointUri)))) { FunctionImportsViewModel.FunctionImports = FunctionImportsHelper.GetFunctionImports( this.CreateServiceConfiguration().GetDataEdmModel(), AdvancedSettingsViewModel.UseNamespacePrefix ? AdvancedSettingsViewModel.NamespacePrefix : null, File.Exists(ConfigODataEndpointViewModel.Endpoint) ? ConfigODataEndpointViewModel.Endpoint : ConfigODataEndpointViewModel.Endpoint.Replace("$metadata", string.Empty)); FunctionImportsViewModel.FunctionImportsCount = FunctionImportsViewModel.FunctionImports?.Count ?? 0; } functionImportsViewModel.FunctionImports = FunctionImportsViewModel.FunctionImports; functionImportsViewModel.FunctionImportsCount = functionImportsViewModel.FunctionImports?.Count ?? 0; functionImportsViewModel.OperationImports = FunctionImportsViewModel.OperationImports; functionImportsViewModel.OperationImportsCount = functionImportsViewModel.OperationImports?.Count ?? 0; } }; this.Pages.Add(ConfigODataEndpointViewModel); this.Pages.Add(AdvancedSettingsViewModel); this.IsFinishEnabled = true; }