/// <summary>Generates code for a model.</summary> /// <param name="model"> The model. </param> /// <param name="namespace"> The namespace. </param> /// <param name="contextDir"> The directory of the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" />. </param> /// <param name="contextName"> The name of the <see cref="T:Microsoft.EntityFrameworkCore.DbContext" />. </param> /// <param name="connectionString"> The connection string. </param> /// <param name="options"> The options to use during generation. </param> /// <returns> The generated model. </returns> public override ScaffoldedModel GenerateModel(IModel model, string @namespace, string contextDir, string contextName, string connectionString, ModelCodeGenerationOptions options) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (string.IsNullOrWhiteSpace(@namespace)) { throw new ArgumentNullException(nameof(@namespace)); } if (contextDir == null) { throw new ArgumentNullException(nameof(contextDir)); } if (string.IsNullOrWhiteSpace(contextName)) { throw new ArgumentNullException(nameof(contextName)); } if (string.IsNullOrWhiteSpace(connectionString)) { throw new ArgumentNullException(nameof(connectionString)); } if (contextDir == null) { throw new ArgumentNullException(nameof(contextDir)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } // Register Hbs helpers and partial templates HandlebarsHelperService.RegisterHelpers(); DbContextTemplateService.RegisterPartialTemplates(); EntityTypeTemplateService.RegisterPartialTemplates(); var resultingFiles = new ScaffoldedModel(); string generatedCode; if (!(CSharpDbContextGenerator is NullCSharpDbContextGenerator)) { generatedCode = CSharpDbContextGenerator.WriteCode(model, @namespace, contextName, connectionString, options.UseDataAnnotations, options.SuppressConnectionStringWarning); var dbContextFileName = contextName + FileExtension; resultingFiles.ContextFile = new ScaffoldedFile { Path = Path.Combine(contextDir, dbContextFileName), Code = generatedCode }; } if (!(CSharpEntityTypeGenerator is NullCSharpEntityTypeGenerator)) { foreach (var entityType in model.GetEntityTypes()) { generatedCode = CSharpEntityTypeGenerator.WriteCode(entityType, @namespace, options.UseDataAnnotations); var transformedFileName = EntityTypeTransformationService.TransformEntityFileName(entityType.DisplayName()); var entityTypeFileName = transformedFileName + FileExtension; resultingFiles.AdditionalFiles.Add(new ScaffoldedFile { Path = entityTypeFileName, Code = generatedCode }); } } return(resultingFiles); }
/// <summary> /// <summary>Generates code for a model.</summary> /// </summary> /// <param name="model"> The model.</param> /// <param name="options"> The options to use during generation. </param> /// <returns> The generated model. </returns> public override ScaffoldedModel GenerateModel(IModel model, ModelCodeGenerationOptions options) { Check.NotNull(model, nameof(model)); Check.NotNull(options, nameof(options)); // Register Hbs helpers and partial templates HandlebarsHelperService.RegisterHelpers(); HandlebarsBlockHelperService.RegisterBlockHelpers(); DbContextTemplateService.RegisterPartialTemplates(); EntityTypeTemplateService.RegisterPartialTemplates(); var resultingFiles = new ScaffoldedModel(); string generatedCode; if (!(CSharpDbContextGenerator is NullCSharpDbContextGenerator)) { generatedCode = CSharpDbContextGenerator.WriteCode( model, options.ContextName, options.ConnectionString, options.ContextNamespace, options.ModelNamespace, options.UseDataAnnotations, options.SuppressConnectionStringWarning, options.SuppressOnConfiguring); var dbContextFileName = ContextTransformationService.TransformContextFileName(options.ContextName) + FileExtension; resultingFiles.ContextFile = new ScaffoldedFile { Path = options.ContextDir != null ? Path.Combine(options.ContextDir, dbContextFileName) : dbContextFileName, Code = generatedCode }; } if (!(CSharpEntityTypeGenerator is NullCSharpEntityTypeGenerator)) { foreach (var entityType in model.GetScaffoldEntityTypes(_options.Value)) { generatedCode = CSharpEntityTypeGenerator.WriteCode( entityType, options.ModelNamespace, options.UseDataAnnotations); var transformedFileName = EntityTypeTransformationService.TransformEntityFileName(entityType.DisplayName()); var entityTypeFileName = _options?.Value?.EnableSchemaFolders == true ? Path.Combine(CSharpHelper.Namespace(entityType.GetSchema()), transformedFileName + FileExtension) : transformedFileName + FileExtension; resultingFiles.AdditionalFiles.Add( new ScaffoldedFile { Path = entityTypeFileName, Code = generatedCode }); } } return(resultingFiles); }