internal async Task GenerateViews(RazorPageGeneratorModel razorPageGeneratorModel) { if (razorPageGeneratorModel == null) { throw new ArgumentNullException(nameof(razorPageGeneratorModel)); } if (razorPageGeneratorModel.NoPageModel) { // Throw not supported exception. throw new ArgumentException(MessageStrings.PageModelFlagNotSupported); } IDictionary <string, string> viewAndTemplateNames = new Dictionary <string, string>(); foreach (string viewTemplate in Views) { string viewName = viewTemplate == "List" ? "Index" : viewTemplate; viewAndTemplateNames.Add(viewName, viewTemplate); } ModelTypeAndContextModel modelTypeAndContextModel = null; string outputPath = ValidateAndGetOutputPath(razorPageGeneratorModel, string.Empty); EFValidationUtil.ValidateEFDependencies(_projectContext.PackageDependencies); modelTypeAndContextModel = await ModelMetadataUtilities.ValidateModelAndGetEFMetadata( razorPageGeneratorModel, _entityFrameworkService, _modelTypesLocator, string.Empty); await BaseGenerateViews(viewAndTemplateNames, razorPageGeneratorModel, modelTypeAndContextModel, outputPath); }
public override async Task GenerateCode(ViewGeneratorModel viewGeneratorModel) { if (viewGeneratorModel == null) { throw new ArgumentNullException(nameof(viewGeneratorModel)); } if (string.IsNullOrEmpty(viewGeneratorModel.ViewName)) { throw new ArgumentException(MessageStrings.ViewNameRequired); } if (string.IsNullOrEmpty(viewGeneratorModel.TemplateName)) { throw new ArgumentException(MessageStrings.TemplateNameRequired); } ModelTypeAndContextModel modelTypeAndContextModel = null; var outputPath = ValidateAndGetOutputPath(viewGeneratorModel, outputFileName: viewGeneratorModel.ViewName + Constants.ViewExtension); EFValidationUtil.ValidateEFDependencies(_projectContext.PackageDependencies); modelTypeAndContextModel = await ModelMetadataUtilities.ValidateModelAndGetEFMetadata( viewGeneratorModel, _entityFrameworkService, _modelTypesLocator, string.Empty); await GenerateView(viewGeneratorModel, modelTypeAndContextModel, outputPath); if (modelTypeAndContextModel.ContextProcessingResult.ContextProcessingStatus == ContextProcessingStatus.ContextAddedButRequiresConfig) { throw new Exception(string.Format("{0} {1}", MessageStrings.ScaffoldingSuccessful_unregistered, MessageStrings.Scaffolding_additionalSteps)); } }
public override async Task GenerateCode(RazorPageGeneratorModel razorGeneratorModel) { if (razorGeneratorModel == null) { throw new ArgumentNullException(nameof(razorGeneratorModel)); } if (string.IsNullOrEmpty(razorGeneratorModel.RazorPageName)) { throw new ArgumentException(MessageStrings.RazorPageNameRequired); } if (string.IsNullOrEmpty(razorGeneratorModel.TemplateName)) { throw new ArgumentException(MessageStrings.TemplateNameRequired); } if (razorGeneratorModel.NoPageModel) { // Throw not supported exception. throw new ArgumentException(MessageStrings.PageModelFlagNotSupported); } ModelTypeAndContextModel modelTypeAndContextModel = null; var outputPath = ValidateAndGetOutputPath(razorGeneratorModel, outputFileName: razorGeneratorModel.RazorPageName + Constants.ViewExtension); EFValidationUtil.ValidateEFDependencies(_projectContext.PackageDependencies); modelTypeAndContextModel = await ModelMetadataUtilities.ValidateModelAndGetEFMetadata( razorGeneratorModel, _entityFrameworkService, _modelTypesLocator, string.Empty); var layoutDependencyInstaller = ActivatorUtilities.CreateInstance <MvcLayoutDependencyInstaller>(_serviceProvider); await layoutDependencyInstaller.Execute(); await GenerateView(razorGeneratorModel, modelTypeAndContextModel, outputPath); await layoutDependencyInstaller.InstallDependencies(); if (modelTypeAndContextModel.ContextProcessingResult.ContextProcessingStatus == ContextProcessingStatus.ContextAddedButRequiresConfig) { throw new Exception(string.Format("{0} {1}", MessageStrings.ScaffoldingSuccessful_unregistered, MessageStrings.Scaffolding_additionalSteps)); } }
public override async Task Generate(CommandLineGeneratorModel controllerGeneratorModel) { Contract.Assert(!String.IsNullOrEmpty(controllerGeneratorModel.ModelClass)); ValidateNameSpaceName(controllerGeneratorModel); EFValidationUtil.ValidateEFDependencies(ProjectContext.PackageDependencies, controllerGeneratorModel.UseSqlite); string outputPath = ValidateAndGetOutputPath(controllerGeneratorModel); _areaName = GetAreaName(ApplicationInfo.ApplicationBasePath, outputPath); var modelTypeAndContextModel = await ModelMetadataUtilities.ValidateModelAndGetEFMetadata( controllerGeneratorModel, EntityFrameworkService, ModelTypesLocator, _areaName); if (string.IsNullOrEmpty(controllerGeneratorModel.ControllerName)) { //Todo: Pluralize model name controllerGeneratorModel.ControllerName = modelTypeAndContextModel.ModelType.Name + Constants.ControllerSuffix; } var namespaceName = string.IsNullOrEmpty(controllerGeneratorModel.ControllerNamespace) ? GetDefaultControllerNamespace(controllerGeneratorModel.RelativeFolderPath) : controllerGeneratorModel.ControllerNamespace; var templateModel = new ControllerWithContextTemplateModel(modelTypeAndContextModel.ModelType, modelTypeAndContextModel.DbContextFullName) { ControllerName = controllerGeneratorModel.ControllerName, AreaName = _areaName, UseAsync = controllerGeneratorModel.UseAsync, // This is no longer used for controllers with context. ControllerNamespace = namespaceName, ModelMetadata = modelTypeAndContextModel.ContextProcessingResult.ModelMetadata }; await CodeGeneratorActionsService.AddFileFromTemplateAsync(outputPath, GetTemplateName(controllerGeneratorModel), TemplateFolders, templateModel); Logger.LogMessage(string.Format(MessageStrings.AddedController, outputPath.Substring(ApplicationInfo.ApplicationBasePath.Length))); await GenerateViewsIfRequired(controllerGeneratorModel, modelTypeAndContextModel, templateModel.ControllerRootName); if (modelTypeAndContextModel.ContextProcessingResult.ContextProcessingStatus == ContextProcessingStatus.ContextAddedButRequiresConfig) { throw new Exception(string.Format("{0} {1}", MessageStrings.ScaffoldingSuccessful_unregistered, MessageStrings.Scaffolding_additionalSteps)); } }